2011-07-13 200 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')