0

入力配列でクエリ結果を並べ替える方法はありますか?

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

お気づきかもしれませんが、これにより、target_table id による結果の順序が得られ、入力配列 (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 に答える