0
我試圖從該查詢多列反對
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
得到的結果,但我得到這個錯誤#1191 - Can't find FULLTEXT index matching the column list
當我在比賽只放一列是工作,兩個或兩個以上MATCH內的列不起作用。我看到有人在做。
我試圖從該查詢多列反對
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
得到的結果,但我得到這個錯誤#1191 - Can't find FULLTEXT index matching the column list
當我在比賽只放一列是工作,兩個或兩個以上MATCH內的列不起作用。我看到有人在做。
在MATCH()
內命名的列必須與以前爲FULLTEXT索引定義的列相同。也就是說,索引中的列集必須與您致電MATCH()
時的索引相同。
因此,要搜索兩列,必須按相同的順序在相同的兩列上定義FULLTEXT索引。
以下是好的:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
以下是錯誤的,因爲MATCH()引用了兩列,但該指數是隻有一列定義。
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
以下是錯誤的,因爲MATCH()引用了兩列,但索引是爲三列定義的。
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
以下是錯誤的,因爲MATCH()引用了兩列,但以錯誤的順序:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
綜上所述,使用MATCH()必須引用完全相同列,在同順序,作爲你的全文索引定義。
我不明白。你能給個例子嗎? – Victor 2017-03-29 14:39:16
@Victor,參見上面的例子。 – 2017-03-29 18:22:07