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

PostgreSQL json_array_elements w klauzuli FROM - dlaczego to nie jest sprzężenie kartezjańskie?

W rzeczywistości jest to staromodne składnia CROSS JOIN. Formalny odpowiednik:

SELECT
    t.json_column->>'x',
    nested->>'y'
FROM 
    my_table t
CROSS JOIN
    json_array_elements(t.json_column->'nested') nested;

Zapytanie nie tworzy iloczynu kartezjańskiego, ale działa raczej jak sprzężenie wewnętrzne. Dzieje się tak, ponieważ ma ukryty referencja między dwiema częściami złączenia, w tym przypadku alias t . Ten rodzaj łączenia jest znany jako LATERAL JOIN . dokumentacja :

Jeśli jedna z części złączenia jest funkcją, jest domyślnie traktowana jako boczna.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lastInsertId nie działa w Postgresql

  2. nie można przechowywać 0 lub 1 jako boolean laravel postgresql

  3. Jak wyrenderować obiekt w widokach Django?

  4. Jak napisać zapytanie Django z podzapytaniem jako częścią klauzuli WHERE?

  5. Rozpakuj tablicę o jeden poziom