我在表上使用全文搜索,并将其与来自不同数据库的表连接起来。表 (table1
( 在列 name
上定义了一个全文索引。
当我尝试使用全文搜索时,以下查询不起作用:
SELECT t1.id, t2.id, t2.url
FROM `db1`.table1 t1
LEFT JOIN `db2`.table2 t2
ON t1.column1 = t2.column1
WHERE t2.column1 IS NOT NULL
AND MATCH (t1.name) AGAINST ('searchString' IN NATURAL LANGUAGE MODE)
但是当在没有左连接的情况下使用它时,查询 WORKS 有效:
SELECT t1.id
FROM `db1`.table1 t1
WHERE MATCH (t1.name) AGAINST ('searchString' IN NATURAL LANGUAGE MODE)
注意:我不能使用LIKE %searchString%
,而不是match-against
来解决性能问题。
有没有办法在同一查询中使用全文搜索和左联接?
编辑:似乎问题与两个表不在同一数据库中的事实有关。 当尝试使用来自同一数据库的两个表执行相同的查询时,它可以工作。知道为什么会发生这种情况吗?
是 我们可以在同一查询中使用全文搜索和左联接。
检查示例和查询。 :链接
SELECT t1.id, t2.id, t2.url
FROM `db1`.table1 t1
LEFT JOIN `db2`.table2 t2
ON t1.column1 = t2.column1 and t2.column1 IS NOT NULL
where MATCH (t1.name) AGAINST ('searchString' IN NATURAL LANGUAGE MODE)
如果有任何错误,请告诉我们。
MATCH(t1.name) AGAINST ('searchString' IN BOOLEAN MODE)>0
仅供参考where t2.column1 is not null
将左连接转换为连接。左连接是第一个表中的所有数据,但是当您在右表 (2nd( 上指定 where 子句时,您将强制查询进入连接。 这可能是查询不起作用的原因。 第二个(右(表中没有匹配的数据。