Di Postgres 9.4 atau yang lebih baru, ini paling sederhana dan tercepat :
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
diperkenalkan dengan di Postgres 9.4. -
Tidak perlu subquery, kita bisa langsung menggunakan fungsi set-returning seperti tabel. (A.k.a. "fungsi-tabel".)
-
Sebuah literal string untuk diserahkan dalam array alih-alih konstruktor ARRAY mungkin lebih mudah diterapkan dengan beberapa klien.
-
Untuk kenyamanan (opsional), salin nama kolom tempat kita bergabung (
id
dalam contoh), sehingga kita dapat bergabung denganUSING
singkat klausa untuk hanya mendapatkan satu contoh kolom gabungan dalam hasil. -
Bekerja dengan apa saja tipe masukan. Jika kolom kunci Anda bertipe
text
, berikan sesuatu seperti'{foo,bar,baz}'::text[]
.
Penjelasan detail:
- PostgreSQL unnest() dengan nomor elemen