sql >> Databáze >  >> RDS >> PostgreSQL

OBJEDNAT PODLE seznamu hodnot IN

V Postgres 9.4 nebo novější, je to nejjednodušší a nejrychlejší :

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 byl představen v Postgres 9.4.

  • Není potřeba poddotaz, můžeme přímo použít funkci set-returning jako tabulku. (také znám jako "tabulka-funkce".)

  • Řetězcový literál k předání pole namísto konstruktoru ARRAY může být snazší implementovat u některých klientů.

  • Pro usnadnění (volitelně) zkopírujte název sloupce, ke kterému se připojujeme (id v příkladu), takže se můžeme připojit pomocí krátkého USING klauzule k získání pouze jedné instance sloupce spojení ve výsledku.

  • Funguje s jakýmkoli Typ vstupu. Pokud je váš klíčový sloupec typu text , zadejte něco jako '{foo,bar,baz}'::text[] .

Podrobné vysvětlení:

  • PostgreSQL unnest() s číslem prvku


  1. Zobrazit datum další události

  2. Přidejte měsíce k datu v SQLite

  3. Jak změnit tabulku v Oracle

  4. Algoritmus řazení SQL Server GUID. Proč?