2014-10-28 46 views
0

我試圖從該查詢多列反對

SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text') 

得到的結果,但我得到這個錯誤#1191 - Can't find FULLTEXT index matching the column list

當我在比賽只放一列是工作,兩個或兩個以上MATCH內的列不起作用。我看到有人在做。

回答

4

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()必須引用完全相同列,在同順序,作爲你的全文索引定義。

+0

我不明白。你能給個例子嗎? – Victor 2017-03-29 14:39:16

+0

@Victor,參見上面的例子。 – 2017-03-29 18:22:07