mysql:按like排序?

标签 mysql sql sql-order-by sql-like

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

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

1: John Doe
2: Samuel Doe
3: John Smith
4: Anna Smith

now Query:

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

它将选择记录:1,2,3(按此顺序) 但我想按关键字订购 例如 keyword1=John,keyword2=Doe 所以它应该按关键字列出:1,3,2(因为我想在搜索“John”后搜索“Doe”)

我在考虑 SELECT DISTINCT FROM (...... UNION .....) 但是以另一种方式订购它会容易得多(真正的查询真的很长)

有什么技巧可以创建这样的顺序吗?

最佳答案

order by case 
    when name LIKE "%John%" then 1 
    when name LIKE "%Doe%"  then 2 
    else 3 
end

关于mysql:按like排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609166/

相关文章:

mysql - 而不是 MySQL ORDER BY RAND

mysql - 如何避免此 mysql 查询的文件排序

mysql - 计算在 mysql 表中找到的值内的项目

mysql - 加载 INFILE 而不是 mysqlimport

php - 准备语句——跨表更新

sql - 翻译词典 - 选择翻译的子集

sql - 如何将 yyyymm 转换为 Mon-yyyy?

MySQL 限制查询无法获取所有数据

MySQL 错误、事件连接、拒绝访问、无权限

mysql - 请帮助我进行表/嵌套 JOIN 优化 : Way too slow!