有没有办法按输入数组排序查询结果?
SELECT * FROM target_table WHERE id IN (4,2,6,1) ORDER BY ???
正如您可能会注意到,这将通过target_table ID给出结果顺序,输入数组(4,2,6,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;