mysql - INNODB FULLTEXT 使用 JOIN 搜索:不同表上的搜索词
问题描述
我曾经使用以下查询MyISAM
:
SELECT *, table2.columnx
FROM table1
LEFT JOIN table2 ON table1.columnx_id = table2.id
WHERE MATCH(table1.columny, table2.columnx) AGAINST("+key* +word*" IN BOOLEAN MODE);
这FULLTEXT
将对多个表进行搜索。
现在,我切换到INNODB
并收到以下错误消息:
一般错误:1210 MATCH 的参数不正确
我按如下方式重写了查询以删除错误消息并使其正常工作:
SELECT *, table2.columnx
FROM table1
LEFT JOIN table2 ON table1.columnx_id = table2.id
WHERE MATCH(table1.columny) AGAINST("+key* +word*" IN BOOLEAN MODE)
OR MATCH(table2.columnx) AGAINST("+key* +word*" IN BOOLEAN MODE);
只要所有搜索词key
ANDword
都在同一个表中,这就会很好地工作。
但是,如果 egkey
在table1
并且word
在table1
我没有得到任何结果。
我该如何解决这个问题?
解决方案
正如@Akina 所描述的,这似乎是不可能的,因为INNODB
不允许FULLTEXT
在两个表上进行搜索。
我将只为搜索创建第三个表,FULLTEXT
并用两个表中的数据填充它。