根据搜索结果查询订单结果

时间:2014-06-28 11:45:05

标签: php mysql sql

我正在创建一个搜索功能,并使用以下查询获取输入参数并查询我的数据库:

select * from people where title like '{param}%' or title like '%{param}%';

我的问题是,这会返回所有记录,但是我想要对结果进行排序,以便where语句'title''{param}%''的结果首先返回,然后返回以下where语句。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

试试:

  select * from people where title like '{param}%' or title like '%{param}%'
  ORDER BY CASE when title like '{param}%' then 0
                when title like '%{param}%' then 1 end asc

答案 1 :(得分:0)

我会把它写成:

select *
from people
where title like '{param}%' or title like '%{param}%'
order by (title like '{param}%') + (title like '%{param}%') desc;

MySQL将布尔结果视为整数,因此您可以将它们一起添加。显然,如果某些内容以{param}开头,那么它也包含它,因此它们的值为2