当前位置: 首页 > 面试题库 >

Mysql:按喜欢排序吗?

楚嘉玉
2023-03-14
问题内容

假设我们正在使用关键字执行搜索:keyword1,keyword2,keyword3

数据库中有“名称”列的记录:

1:约翰·杜
2:塞缪尔·多伊
3:约翰·史密斯
4:安娜·史密斯

现在查询:

SELECT * FROM users WHERE (name LIKE "%John%" OR name LIKE "%Doe%")

它会选择记录:1,2,3(按此顺序),但我想按示例在关键字中进行排序,keyword1=John, keyword2=Doe
因此应按关键字列出:1,3,2(因为我想在搜索后搜索“ Doe”搜索“约翰”)

我当时在想,SELECT DISTINCT FROM (...... UNION .....) 但是用另一种方式订购它会容易得多(实际查询时间很长)

有什么技巧可以创建这样的订单?


问题答案:
order by case 
    when name LIKE "%John%" then 1 
    when name LIKE "%Doe%"  then 2 
    else 3 
end


 类似资料:
  • 问题内容: 我当前的查询如下所示: 我环顾四周,找不到类似于LIKE IN()的东西-我认为它的工作方式如下: 有任何想法吗?我只是以错误的方式思考问题-一些我从未见过的晦涩命令。 MySQL 5.0.77-社区日志 问题答案: 一个REGEXP 可能 会更有效,但你必须对它进行基准测试,以确保,如

  • 问题内容: 我当前的查询如下所示: 我环顾四周,找不到类似于LIKE IN()的东西-我认为它的工作方式如下: 有任何想法吗?我只是以错误的方式思考问题-一些我从未见过的晦涩命令。 MySQL 5.0.77-社区日志 问题答案: 一个REGEXP 可能 会更有效,但你必须对它进行基准测试,以确保,如

  • 问题内容: 有谁知道哪个更快: 要么 问题答案: 2015年4月20日新增:请同时阅读以下Hallie的回答 第一个,但微不足道。主要是因为它不必进行额外的比较。

  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 问题内容: 我有这个MySQL查询。 我有具有此内容的数据库字段 为什么这样的查询不起作用?我需要体育或酒吧或两者兼有的领域吗? 问题答案: 该列表仅适用于。对于,您必须使用:

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons