我曾经对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不正确的参数匹配
我重写了如下查询,以删除错误消息并使其工作:
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
和word
都在同一个表中,这就工作得很好。
但如果例如key
是在table1
和word
是在table1
我没有得到任何结果。
我怎样才能解决这个问题?
正如@Akina所描述的,这似乎是不可能的,因为INNODB
不允许在两个表上搜索FULLTEXT
。
我将仅为FULLTEXT
搜索创建第三个表,并使用两个表中的数据填充该表。