PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

ZAMÓW WEDŁUG listy wartości IN

W Postgresie 9.4 lub później, jest to najprostsze i najszybsze :

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 został wprowadzony w Postgresie 9.4.

  • Nie ma potrzeby wykonywania podzapytania, możemy użyć funkcji zwracania zestawu bezpośrednio jak tabeli. (inaczej "funkcja tabeli".)

  • Literał ciągu do podania w tablicy zamiast konstruktora ARRAY może być łatwiejszy do zaimplementowania w przypadku niektórych klientów.

  • Dla wygody (opcjonalnie) skopiuj nazwę kolumny, do której się przyłączamy (id w przykładzie), więc możemy dołączyć za pomocą krótkiego USING klauzula, aby w wyniku uzyskać tylko jedno wystąpienie kolumny sprzężenia.

  • Działa z dowolnym typ wejścia. Jeśli kolumna klucza ma typ text , podaj coś w stylu '{foo,bar,baz}'::text[] .

Szczegółowe wyjaśnienie:

  • PostgreSQL unnest() z numerem elementu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj django RawQuerySet na Queryset

  2. Indeks do znajdowania elementu w tablicy JSON

  3. Instrukcja IF PostgreSQL

  4. Konwertuj plik zrzutu SQLITE SQL na POSTGRESQL

  5. Jak przywrócić plik zrzutu PostgreSQL do baz danych Postgres?