我正在创建一个搜索功能,并使用以下查询获取输入参数并查询我的数据库:
select * from people where title like '{param}%' or title like '%{param}%';
我的问题是,这会返回所有记录,但是我想要对结果进行排序,以便where语句'title''{param}%''的结果首先返回,然后返回以下where语句。
有没有办法做到这一点?
答案 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
。