【问题标题】:Query order results according to search results根据搜索结果查询订单结果
【发布时间】:2014-06-28 11:45:05
【问题描述】:

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

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

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

有什么办法吗?

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    试试看:

      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
    

    【讨论】:

    • 我认为您必须根据用户要求使用ASC
    【解决方案2】:

    我会这样写:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多