2013-04-10 68 views
0

我想這個查詢:Mysql的比賽,對沒有返回正確的結果

SELECT * FROM `table_name` WHERE MATCH(`field_name`) 
AGAINST('+san +city' IN BOOLEAN MODE) 

我想應該包含SAN城市的所有記錄,但結果是不同的。結果得到所有包含「珠江城,鹽湖城等」的「城市」記錄。 我做錯了什麼。

+0

那麼它是一個全文檢索,這就是爲什麼它顯示了所有城市的結果。如果只想搜索「聖城」結果,爲什麼不使用like子句? – Neo 2013-04-10 06:45:33

回答

2

嘗試在SELECT -part查詢的加入比賽獲得關於MySQL如何在這裏工作一握:

SELECT *, MATCH(field_name) AGAINST('+san +city' IN BOOLEAN MODE) 
FROM table_name 
WHERE MATCH(field_name) AGAINST('+san +city' IN BOOLEAN MODE) 

你會看到在此列的優先級。

請記住,你的結果,如果你正在使用MyISAM和MySQL的< 5.6或InnoDB和MySQL的=> 5.6不同。關於它的Here's a good article

+0

好吧,我使用此查詢,而不是比賽,對查詢:SELECT 從FIELD_NAME table_name的WHERE(FIELD_NAME LIKE '%城市%' AND FIELD_NAME LIKE '%太陽%'); ,我讓我的慾望導致 – Farhan 2013-04-10 07:24:42

+0

你可以做到這一點,但是這不是全文搜索即可。無論什麼最適合您的需求! – Bjoern 2013-04-10 08:12:20

+0

是不是全文搜索,無論如何感謝您的善意幫助 – Farhan 2013-04-10 08:13:59

相關問題