I Postgres 9.4 eller senere, dette er enkleste og hurtigste :
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
blev introduceret med i Postgres 9.4. -
Intet behov for en underforespørgsel, vi kan bruge sæt-retur-funktionen som en tabel direkte. (A.k.a. "tabel-funktion".)
-
En streng bogstavelig til at indlevere arrayet i stedet for en ARRAY-konstruktør kan være lettere at implementere med nogle klienter.
-
For nemheds skyld (valgfrit), kopier kolonnenavnet, vi tilslutter os (
id
i eksemplet), så vi kan deltage med en kortUSING
klausul for kun at få en enkelt forekomst af join-kolonnen i resultatet. -
Fungerer med alle input type. Hvis din nøglekolonne er af typen
text
, angiv noget som'{foo,bar,baz}'::text[]
.
Detaljeret forklaring:
- PostgreSQL unnest() med elementnummer