我喜欢在MySQL上优先选择一行.我不知道是否可能,但请看下面的例子:
id name
1 John
2 Doe
3 Mary
4 Jhonny
Run Code Online (Sandbox Code Playgroud)
假设我不知道ID,但由于特定原因,我需要按优先级选择:3,2,1 ...在这种情况下,将选择MARY(#3).但如果我需要按顺序5,2,1选择,将选择DOE(#2).
好的,我可以使用IN(5,2,1)来做到这一点.问题是,如果我没有任何结果(如IN(5,6,7)),我至少需要一行(无所谓).
例如:选择5,6,7 ......没有找到...然后,选择第一个找到的(如JOHN).
这是可能的?
再见!
编辑:我只是想到了这个解决方案,但我不知道应该有多快,但效果很好.接受一个没有人输的更好基准的回复.
ORDER BY FIND_IN_SET(`id`, '5,6,7') DESC
Run Code Online (Sandbox Code Playgroud)
SELECT *
FROM your_table
ORDER BY
(CASE id
WHEN 5 THEN 1
WHEN 6 THEN 2
WHEN 7 THEN 3
ELSE id+10
END)
LIMIT $some_limit;
Run Code Online (Sandbox Code Playgroud)
诀窍就是利用 order by
因此,匹配id为5将赋予优先级1,
匹配id为6将赋予优先级2,
匹配id为7将赋予优先级3,
否则,最小id将返回
假设你使用unsigned作为id
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |