1. ホーム
  2. sql

[解決済み】ORDER BY IN値リスト

2022-04-12 12:23:55

質問

PostgreSQL 8.3で、コメントの束を取得する簡単なSQLクエリを持っています。私は ソート済み の値のリストを IN を構成しています。 WHERE 節を使用します。

SELECT * FROM comments WHERE (comments.id IN (1,3,2,4));

これは、任意の順序でコメントを返しますが、私の場合は以下のようなIDになります。 1,2,3,4 .

のリストのように、結果の行を並べ替えたいのです。 IN を構成します。 (1,3,2,4) .

どうすれば実現できるのか?

どのように解決するのですか?

(PostgreSQL 8.2 で導入された) VALUES (), () を使用すると、非常に簡単に行うことができます。

構文はこのようになります。

select c.*
from comments c
join (
  values
    (1,1),
    (3,2),
    (2,3),
    (4,4)
) as x (id, ordering) on c.id = x.id
order by x.ordering