In Postgres 9,4 of later, dit is eenvoudigste en snelste :
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
werd geïntroduceerd met in Postgres 9.4. -
Er is geen subquery nodig, we kunnen de set-retourfunctie direct als een tabel gebruiken. (A.k.a. "table-functie".)
-
Een letterlijke tekenreeks om de array in te dienen in plaats van een ARRAY-constructor kan bij sommige clients gemakkelijker te implementeren zijn.
-
Kopieer voor het gemak (optioneel) de kolomnaam waaraan we deelnemen (
id
in het voorbeeld), zodat we kunnen meedoen met een korteUSING
clausule om slechts één exemplaar van de join-kolom in het resultaat te krijgen. -
Werkt met elke invoertype. Als uw sleutelkolom van het type
text
is , geef iets op als'{foo,bar,baz}'::text[]
.
Gedetailleerde uitleg:
- PostgreSQL unnest() met elementnummer