sql >> Databasteknik >  >> RDS >> PostgreSQL

BESTÄLL EFTER IN-värdelistan

I Postgres 9.4 eller senare, detta är enklast och snabbast :

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 introducerades med i Postgres 9.4.

  • Inget behov av en underfråga, vi kan använda set-retur-funktionen som en tabell direkt. (A.k.a. "tabellfunktion".)

  • En bokstavlig sträng att lämna in arrayen istället för en ARRAY-konstruktor kan vara lättare att implementera med vissa klienter.

  • För enkelhetens skull (valfritt), kopiera kolumnnamnet som vi ansluter till (id i exemplet), så att vi kan ansluta med en kort USING sats för att bara få en enda instans av join-kolumnen i resultatet.

  • Fungerar med alla ingångstyp. Om din nyckelkolumn är av typen text , ange något som '{foo,bar,baz}'::text[] .

Detaljerad förklaring:

  • PostgreSQL unnest() med elementnummer


  1. SQL Server:Kommunikationslänksfel Krävs SSL (misslyckades med att ta emot paket)

  2. Kan inte dekryptera med pgcrypto från AES-256-CBC men AES-128-CBC är OK

  3. Hur ska jag importera data från CSV till en Postgres-tabell med pgAdmin 3?

  4. Hur man använder databasehelper-klassen i en asynctask-klass som arbetar på en annan klass