如何按in子句的顺序选择mysql行

如何按in子句的顺序选择mysql行,sql,mysql,sql-order-by,Sql,Mysql,Sql Order By,例如,我在EMPLOYEE表中有: (code, name) (1, 'Jimmy') (2, 'Albert') (3, 'Michelle') (4, 'Felix' ) 如果您这样做:从员工中选择*,您将获得: (1, 'Jimmy') (2, 'Albert') (3, 'Michelle') (4, 'Felix' ) (1, 'Jimmy') (2, 'Albert') (3, 'Michelle') (4, 'Felix' ) 如果您这样做:从EMPLOYEE中选择*,其中代

例如,我在EMPLOYEE表中有:

(code, name)
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如果您这样做:从员工中选择*,您将获得:

(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如果您这样做:从EMPLOYEE中选择*,其中代码为1,3,2,4,您将获得:

(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如何按in子句中CSV值的顺序获取它

(1, 'Jimmy')
(3, 'Michelle')
(2, 'Albert')
(4, 'Felix' )
使用:

或者使用案例陈述:

SELECT e.* 
  FROM EMPLOYEE e 
 WHERE e.code in (1,3,2,4) 
ORDER BY CASE e.code
           WHEN 1 THEN 1 
           WHEN 3 THEN 2
           WHEN 2 THEN 3
           WHEN 4 THEN 4
         END

此问题的一般解决方案是,根据输入的CSV文件保留顺序,即在表中添加一个自动增量列,并根据该列进行排序。您可能永远不会将其显示为查询的一部分,但您可以在导入后对其进行排序,以获取输入文件中的原始顺序。

如果我现在有投票权,我会+1。令人惊叹的当我回来的时候,我必须这样做。@GolezTrol:Dirty是MySQL继续缺乏分析支持:/orderby子句中的e.code应该是吗?我想编辑一下以备审查,但我有点被你的73.1k吓到了@法雷:更正。谢谢你让我知道如果观众之间的顺序不同怎么办,例如:你和我?@Ponies,那么这假设整个表的一次导入和基于文件输入的一次订单。我的回答是基于他把这个问题和一个特定的CSV输入文件顺序结合在一起。另一个答案假设我对CSV文件有很好的了解。既然必须重新加载CSV文件才能获得正确的顺序,为什么还要再使用数据库?显然,您必须将信息记录在数据库中的某个位置,或者您已经知道了一切,那么为什么还要查询它呢?如果不同观众之间的顺序不同???CSV文件是否更改位置。如果订购非常重要,并且实际上意味着什么,则应将其记录在DB中。可能的副本也可以是的副本也可以是的副本