用于搜索的SQL查询

时间:2014-02-21 05:49:27

标签: php mysql sql

我想从我的分类数据库中搜索一些数据,假设我想搜索taj酒店,那么taj酒店应该位于顶部。但根据我使用过的查询,所有酒店都会被检索到,而taj酒店就在下一页或其他位置。 我的疑问是:

SELECT * 
  FROM tbl_user_products 
 WHERE     (company_name='$a') 
        OR (product_name='$a') 
        OR (   company_name like '%$a%' 
           OR category like '%$a%' 
           OR subcategory like '%$a%' 
           OR title like '%$a%' 
           OR description like '%$a%' 
           OR website like '%$a%'
           OR product_name like '%$a%')  
       AND (city='$cityselect')
 LIMIT $startResults, $resultsPerPage

请建议我可以使用的东西

3 个答案:

答案 0 :(得分:1)

尝试

order by FIELD(field_name,'taj') ; 

答案 1 :(得分:1)

请说taj hoteltitletbl_user_products,然后您可以使用ORDER BY

ORDER BY FIELD(title,'$a') DESC

更新:

  

这里的字段是什么?请解释更多

手册说FIELD()

  

返回str1,str2,str3,...列表中str的索引(位置)。如果未找到str,则返回0

但是在{(1}}的情况下,ORDER BY的第一个参数是表中的列名,而其他参数可以是自定义方式的值的顺序。

例如,如果您提供FIELD,则会先显示标题为ORDER BY FIELD(title,'taj','park','continental',) DESC的所有记录,然后显示continental然后park,然后按字母顺序

答案 2 :(得分:0)

如果您想搜索特定城市的所有酒店,则不应在字段上添加条件,其中包含“酒店”详细信息,而是在该字段上应用订单。

假设酒店详细信息存在于field1中,那么您可以将所需的酒店保持在最佳位置,即使您可以按照以下方式将多个所需的酒店保持在最佳状态 -

按字段排序(field1,'Taj')描述 - 它将使Taj保持在最顶层

按字段排序(field1,'Trident','Taj') - 它将使Taj保持在顶部,然后从顶部开始第二个位置的Trident。