Postgresで9.4 以降、これは最もシンプルで最速です :
SELECT c.*
FROM comments c
JOIN unnest('{1,3,2,4}'::int[]) WITH ORDINALITY t(id, ord) USING (id)
ORDER BY t.ord;
-
WITH ORDINALITY
Postgres9.4で導入されました。 -
サブクエリは必要ありません。テーブルのようにset-returning関数を直接使用できます。 (別名「テーブル機能」)
-
ARRAYコンストラクターの代わりに配列に渡す文字列リテラルは、一部のクライアントで実装する方が簡単な場合があります。
-
便宜上(オプションで)、結合する列名をコピーします(
id
例では)、短いUSING
で参加できます 結果で結合列の単一のインスタンスのみを取得する句。 -
任意で動作します 入力方式。キー列のタイプが
text
の場合 、'{foo,bar,baz}'::text[]
のようなものを提供します 。
詳細な説明:
- 要素番号付きのPostgreSQLunnest()