![](/img/trans.png)
[英]MYSQL Difference between ( field1, field2 ) = (x,y) vs field1= x AND field2 = Y
[英]Difference between MATCH (field1, field2) and MATCH(field1) OR MATCH(field2)
以下兩個查詢的結果之間有區別嗎?
SELECT *
FROM table1, table2
WHERE
( MATCH(table1.row1) AGAINST('searchstring' IN BOOLEAN MODE) )
OR
( MATCH(table2.row2) AGAINST('searchstring' IN BOOLEAN MODE) )
SELECT *
FROM table1, table2
WHERE
( MATCH(table1.row1, table2.row2) AGAINST('searchstring' IN BOOLEAN MODE) )
我喜歡第一種方法,因為這使我更容易實現每個領域的排名標准。
是的,第二個查詢是錯誤。
MATCH()
函數的參數必須是為其定義了一個全文索引的所有列。
但是不能在多個表上定義索引。 因此,像MATCH(table1.row1, table2.row2)
這樣的MATCH(table1.row1, table2.row2)
無法工作,因為它引用了來自兩個不同表的列。
如果僅引用同一表中的列,則可以將多個列放在MATCH()
函數中。 實際上,如果全文索引是在多個列上定義的,則是強制性的。 請注意,上面我說過,函數的參數必須是全文索引的所有列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.