dfe*_*ens 31 mysql sql sql-order-by sql-like
假设我们使用关键字执行搜索:keyword1,keyword2,keyword3
数据库中有"name"列的记录:
1: John Doe 2: Samuel Doe 3: John Smith 4: Anna Smith
现在查询:
SELECT * FROM users WHERE (name LIKE "%John%" OR name LIKE "%Doe%")
Run Code Online (Sandbox Code Playgroud)
它将选择记录:1,2,3(按此顺序),但我想在示例中按关键字排序,keyword1=John, keyword2=Doe
所以它应该按关键字列出:1,3,2(因为我想在之后搜索"Doe"寻找"约翰")
我在考虑SELECT DISTINCT FROM (...... UNION .....)
但是以某种方式以另一种方式订购它会更容易(真正的查询真的很长)
是否有任何技巧来创建这样的订单?
Red*_*ter 64
order by case
when name LIKE "%John%" then 1
when name LIKE "%Doe%" then 2
else 3
end
Run Code Online (Sandbox Code Playgroud)
为了构建 RedFilter 的答案,您可以将具有两个关键字的行置于顶部:
order by case
when (name LIKE "%John%" and name LIKE "%Doe%") then 1
when name LIKE "%John%" then 2
when name LIKE "%Doe%" then 3
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27156 次 |
| 最近记录: |