首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL全文搜索不能与左联接一起使用

MySQL全文搜索不能与左联接一起使用
EN

Stack Overflow用户
提问于 2017-02-13 18:44:16
回答 3查看 832关注 0票数 1

我在一个表上使用全文搜索,并将其与来自不同数据库的表连接起来。表(table1)具有在列name上定义的全文索引。

当我尝试使用全文搜索时,以下查询不起作用:

代码语言:javascript
复制
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)

但是当不使用left join时,查询会起作用:

代码语言:javascript
复制
SELECT t1.id
FROM `db1`.table1 t1
WHERE MATCH (t1.name) AGAINST ('searchString' IN NATURAL LANGUAGE MODE)

注意:我不能使用LIKE %searchString%来解决性能问题,而不能使用match-against

有没有办法在同一个查询中使用全文搜索和左连接?

编辑:这个问题似乎与两个表不在同一个数据库中有关。当试图对同一数据库中的两个表执行相同的查询时,它是有效的。你知道为什么会发生这种情况吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-13 19:21:31

是的,我们可以在同一个查询中使用全文搜索和左连接。

检查示例和查询。:Link

代码语言:javascript
复制
        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)

如果有任何错误,请告诉我们。

票数 0
EN

Stack Overflow用户

发布于 2017-02-13 18:50:12

代码语言:javascript
复制
MATCH(t1.name) AGAINST ('searchString' IN BOOLEAN MODE)>0
票数 0
EN

Stack Overflow用户

发布于 2017-02-13 22:47:45

仅供参考where t2.column1 is not null会将左连接转换为连接。Left join是来自第一个表的所有数据,但是,当您在右表(第2个)上指定where子句时,您将强制查询成为一个join。这可能是查询无法工作的原因。第二个(右)表中没有匹配的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42202128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档