我必须使用mysql查询从db中找到数据。
screenio是: - 我必须根据州搜索数据。在admin中,我为每条记录存储三个状态。因此,当用户搜索时,查询将在第一个字段中搜索。如果没有找到数据那么第二个,如果不是则第三个字段。
是否可以在一个查询中执行此操作,以便我能够进行分页。
答案 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
与某个值匹配,那么它将首先显示在结果集中,否则它将在结果的末尾与其他列相同,其他方法是使用第一列查询并检查结果空,然后去第二列等等