以相同顺序查询一系列ID[MySQL]
我想按相同的顺序选择这些ID的名称!ID:1、2、3、20和10 假设我们在MySQL DBMS中有一个“用户”表: 我试过这个:以相同顺序查询一系列ID[MySQL],mysql,sql,Mysql,Sql,我想按相同的顺序选择这些ID的名称!ID:1、2、3、20和10 假设我们在MySQL DBMS中有一个“用户”表: 我试过这个: SELECT name FROM users WHERE id IN (1,2,3,20,10); 希望如此: a、 b,c,e,d 但结果是: a、 b,c,d,e 那么有没有办法通过SQL实现这一点呢?提前感谢..我不知道你想要实现什么,但原则上你可以按以下公式排序 SELECT name FROM users ORDER BY id = 1 DESC,
SELECT name FROM users WHERE id IN (1,2,3,20,10);
希望如此:
a、 b,c,e,d
但结果是:
a、 b,c,d,e
那么有没有办法通过SQL实现这一点呢?提前感谢..我不知道你想要实现什么,但原则上你可以按以下公式排序
SELECT name FROM users ORDER BY
id = 1 DESC,
id = 2 DESC,
id = 3 DESC,
id = 20 DESC,
id = 10 DESC;
由于第一行的(id=1)=true
,这将被转换为1
,使用DESC
这将是第一行,下面的所有其他行将计算为0
对于下一行,
id=1
将是0
,但id=2
将是1
。由于所有其他行的计算结果均为0
,因此将id=2的行置于第二个位置。。。等等。在MySQL中,您可以使用字段()
函数:
select name
from users
where id in (1, 2, 3, 20, 10)
order by case
when id = 1 then 1
when id = 2 then 2
when id = 3 then 3
when id = 20 then 4
when id = 10 then 5
else id
end
order by field(id, 1, 2, 3, 20, 10)
是sql server、Mysql还是Oracle??