2011-07-13 189 views
1

我正在使用我的網站中的分頁開發搜索功能以搜索產品名稱和品牌名稱。我使用這個查詢來獲取用戶的搜索請求:在網站上使用分頁搜索功能

SELECT * 
from products 
WHERE name = 'optimum nutrition' 
    OR brand = 'optimum nutrition' 
    OR name LIKE '%optimum%' 
    OR brand LIKE '%optimum%' 
    OR name LIKE '%nutrition%' 
    OR brand LIKE '%nutrition%' 

我想首先顯示了無論是在品牌名稱和產品名稱中的全部「最佳營養」的產品。我將如何做到這一點?

任何建議將不勝感激。

+0

您的查詢應該可以正常工作,有什麼錯呢? – Starx

回答

2

嘗試:

SELECT *, 
CASE WHEN (name = 'optimum nutrition' OR brand = 'optimum nutrition') THEN 1 ELSE 0 END AS full_match, 
CASE WHEN (name LIKE '%optimum%' OR brand LIKE '%optimum%' OR name LIKE '%nutrition%' OR brand LIKE '%nutrition%') THEN 1 ELSE 0 END AS half_match 
FROM products 
WHERE (name = 'optimum nutrition' OR brand = 'optimum nutrition') 
OR (name LIKE '%optimum%' OR brand LIKE '%optimum%' OR name LIKE '%nutrition%' OR brand LIKE '%nutrition%') 
ORDER BY full_match, half_match 
0

我會建議看着MySQL full text search。這涉及到你想要搜索欄添加一個FULLTEXT指數,然後使用查詢,將是這個樣子:

SELECT * 
FROM products 
WHERE MATCH(name, brand) AGAINST ('optimum')