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


Query order results according to search results

我正在创建一个搜索函数,并接受一个输入参数,并使用以下查询查询我的数据库:

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

我的问题是,这将返回所有的记录,因为他们的意思,但我想排序的结果,以便where语句的"标题",如"{param}%"的结果首先返回,然后是下面的where语句。

有什么办法可以做到吗?

试试:

  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

我会这样写:

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

MySQL将布尔值结果作为整数处理,以便您可以将它们加在一起。显然,如果某项以{param}开头,那么它也包含它,因此它们的值将为2