假设我有一个数据库,该表包含ide为1到20的行.
我想先返回ID为3,4,1的3行,然后返回其他行.这是我的代码:
SELECT id
FROM prod
ORDER BY field( id, 3, 4, 1 )
LIMIT 20
Run Code Online (Sandbox Code Playgroud)
这是此代码的结果:
id
13
17
16
15
7
6
5
2
3
4
1
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我需要先出现的3行最后显示,
如何将这3行添加到列表顶部?
谢谢
Gor*_*off 10
你可以使用desc:
SELECT id
FROM prod
ORDER BY field( id, 3, 4, 1 ) DESC
LIMIT 20
Run Code Online (Sandbox Code Playgroud)
问题是NULL当你按升序执行时,MySQL会将值放在第一位.
如果你真的想要按顺序3,4,1(这个问题在这个要求上是模糊的)的行,那么在field语句中反转它们:
SELECT id
FROM prod
ORDER BY field( id, 1, 4, 3 ) DESC
LIMIT 20
Run Code Online (Sandbox Code Playgroud)
或者,如果你想要花哨:
ORDER BY - field( id, 3, 4, 1 ) DESC
Run Code Online (Sandbox Code Playgroud)