0

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

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

正如您可能注意到的那样,这将为您提供 target_table ids 的结果顺序,而不是输入数组 (4,2,6,1) 所必需的,有没有办法解决这个问题?

4

1 回答 1

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;
于 2013-09-01T16:11:19.763 回答