Php mysql-按字段排序无法正常工作
假设我有一个数据库,该表包含IDE从1到20的行 我想先返回id为3,4,1的3行,然后返回其他行。这是我的代码:Php mysql-按字段排序无法正常工作,php,mysql,Php,Mysql,假设我有一个数据库,该表包含IDE从1到20的行 我想先返回id为3,4,1的3行,然后返回其他行。这是我的代码: SELECT id FROM prod ORDER BY field( id, 3, 4, 1 ) LIMIT 20 这是此代码的结果: id 13 17 16 15 7 6 5 2 3 4 1 奇怪的是,我需要排在前面的3行在最后显示出来 如何将这3行置于列表的顶部 谢谢您可以使用desc: SELECT id FROM prod
SELECT id
FROM prod
ORDER BY field( id, 3, 4, 1 )
LIMIT 20
这是此代码的结果:
id
13
17
16
15
7
6
5
2
3
4
1
奇怪的是,我需要排在前面的3行在最后显示出来
如何将这3行置于列表的顶部
谢谢您可以使用
desc
:
SELECT id
FROM prod
ORDER BY field( id, 3, 4, 1 ) DESC
LIMIT 20
问题是,当您按升序进行排序时,MySQL会将NULL
值放在第一位
如果您确实希望行的顺序为3、4、1(此要求中的问题不明确),请在字段中反转它们:
SELECT id
FROM prod
ORDER BY field( id, 1, 4, 3 ) DESC
LIMIT 20
或者,如果你想变得花哨:
ORDER BY - field( id, 3, 4, 1 ) DESC
尝试使用DESC
SELECT id
FROM prod
ORDER BY field( id, 3, 4, 1 ) DESC
LIMIT 20
看来你的身份证顺序很重要。颠倒数字以得到正确的结果
SELECT id
FROM prod
ORDER BY field( id, 1, 4, 3 ) DESC
LIMIT 20
另一种方法是在
时使用case,并为每个id
提供一个订单值
select * from prod
order by
case
when id = 3 then 0
when id=4 then 1
when id=1 then 2
else 3
end,id
limit 20
;
未测试,但您可以尝试
SELECT id,
(
CASE
WHEN id = '3' THEN 0
WHEN id = '4' THEN 1
WHEN id = '1' THEN 2
END
) as rank
FROM prod
ORDER BY rank
LIMIT 20;
@sgtBOSE。我不知道该怎么说。这将三行放在列表的顶部,这就是OP所要求的。解决方案现在就存在了。:)