For example I have in the table EMPLOYEE:
(code, name)
(1, \'Jimmy\')
(2, \'Albert\')
(3, \'Michelle\')
(4, \'Felix\' )
if you do: (select
The general solution to this problem, retaining the order based on your input (CSV) file, is to add an AUTO_INCREMENT
column to your table and order based on that. You probably will never display it as part of your query, but you can order on it to get the original order in your input file, after the import.
Use the 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')
Or use a CASE statement:
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