mysql - 按字段顺序无法正常工作

moh*_*eri 9 php mysql

假设我有一个数据库,该表包含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)