例如我在表 EMPLOYEE 中有:
(code, name)
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如果您这样做:(从 EMPLOYEE 中选择 *)您将获得:
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如果您这样做:(select * from EMPLOYEE where code in (1,3,2,4) 您将得到:
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
如何按原样在 IN 子句中按 CSV 值的顺序获取它?
(1, 'Jimmy')
(3, 'Michelle')
(2, 'Albert')
(4, 'Felix' )
最佳答案
使用 FIND_IN_SET function :
SELECT e.*
FROM EMPLOYEE e
WHERE e.code in (1,3,2,4)
ORDER BY FIND_IN_SET(e.code, '1,3,2,4')
或者使用 CASE 语句:
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
关于sql - 如何按IN子句的顺序选择mysql行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4986731/