2012-03-13 76 views
0

例如,我想在標題/說明中搜索「Sprite」,「Pepsi」或「Coke」的所有條目,並輸出最後3個結果。用SQL一次搜索多個事物的最有效方法?

------------------------------------------------ 
| ID | Title     | Description  | 
------------------------------------------------ 
| 1 | text text SPRITE text | text PEPSI xxx | 
| 2 | text text text text | text text text | 
| 3 | text text SPRITE text | text COKE xxxx | 
| 4 | text text text text | text text text | 
| 5 | text PEPSI text text | text COKE xxxx | 
| 6 | text COKE text text | text COKE xxxx | 
| 7 | text text text text | text text text | 
| 8 | text text text text | text text text | 
------------------------------------------------ 

這是最高效的查詢嗎?

SELECT * 
FROM `table` 
WHERE title LIKE '%Sprite%' OR description LIKE '%Sprite%' 
     OR title LIKE '%Pepsi%' OR description LIKE '%Pepsi%' 
     OR title LIKE '%Coke%' OR description LIKE '%Coke%' 
ORDER BY 'id' DESC 
LIMIT 3; 

或者有沒有辦法與MATCH AGAINST做到這一點? (我不能找到一種方法)..

輸出示例:

------------------------------------------------ 
| 6 | text COKE text text | text COKE xxxx | 
| 5 | text PEPSI text text | text COKE xxxx | 
| 3 | text text SPRITE text | text COKE xxxx | 
------------------------------------------------ 
+1

您最好的選擇是使用全文搜索服務。例如,獅身人面像。 – 2012-03-13 16:22:22

+2

如果你有全文索引,你應該可以用MATCH(title,description)AGAINST('sprite')等來做。 – 2012-03-13 16:24:36

+0

如何一次匹配多個搜索字詞? – supercoolville 2012-03-13 17:24:09

回答

1
SELECT * 
FROM `table` 
WHERE description regexp ('sprite|pepsi|coke') 
ORDER BY 'id' DESC 
相關問題