In Postgres 9.4 o successivo, questo è il più semplice e veloce :
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
è stato introdotto con Postgres 9.4. -
Non c'è bisogno di una sottoquery, possiamo usare la funzione di ritorno set come una tabella direttamente. (Alias "funzione da tavolo".)
-
Una stringa letterale da consegnare nell'array invece di un costruttore ARRAY può essere più facile da implementare con alcuni client.
-
Per comodità (facoltativamente), copia il nome della colonna a cui ci stiamo unendo (
id
nell'esempio), così possiamo unirci con un breveUSING
clausola per ottenere una sola istanza della colonna join nel risultato. -
Funziona con qualsiasi tipo di ingresso. Se la colonna chiave è di tipo
text
, fornisci qualcosa come'{foo,bar,baz}'::text[]
.
Spiegazione dettagliata:
- PostgreSQL unnest() con numero elemento