订购? col IN数组

时间:2013-09-01 16:06:27

标签: mysql

有没有办法按输入数组排序查询结果?

SELECT * FROM target_table WHERE id IN (4,2,6,1) ORDER BY ???

正如您可能会注意到,这将通过target_table ID给出结果顺序,输入数组(4,2,6,1)不需要,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以在order by

中重复该数组
SELECT *
FROM target_table
WHERE id IN (4, 2, 6, 1)
ORDER BY field(id, 4, 2, 6, 1);

如果您只想列出一次数字,可以将该值放在select列表中并使用having

SELECT t.*, field(id, 4, 2, 6, 1) as ival
FROM target_table t
HAVING ival > 0
ORDER BY ival;