以相同顺序查询一系列ID[MySQL]

以相同顺序查询一系列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,

我想按相同的顺序选择这些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,
  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??