首先在第一个字段中搜索数据,如果不是,则在下一个字段中搜索数据

时间:2014-10-24 07:31:51

标签: php mysql

我必须使用mysql查询从db中找到数据。

screenio是: -   我必须根据州搜索数据。在admin中,我为每条记录存储三个状态。因此,当用户搜索时,查询将在第一个字段中搜索。如果没有找到数据那么第二个,如果不是则第三个字段。

是否可以在一个查询中执行此操作,以便我能够进行分页。

1 个答案:

答案 0 :(得分:0)

一种方法是,您可以通过比较所有三列来编写查询,并根据匹配的列对结果集进行排序

select * ,
case 
   when  col1 = 'some value' then 3
   when  col2 = 'some value' then 2
   when  col2 = 'some value' then 1
else 0 end as matching_criteria
from table
where col1 = 'some value'
or col2 ='some value'
or col3 ='some value'
having matching_criteria > 0
order by matching_criteria desc
limit 10

现在,如果col1与某个值匹配,那么它将首先显示在结果集中,否则它将在结果的末尾与其他列相同,其他方法是使用第一列查询并检查结果空,然后去第二列等等