PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL json_array_elements в клауза FROM - защо това не е декартово съединение?

Всъщност това е старомодно синтаксис за CROSS JOIN. Формален еквивалент:

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

Заявката не произвежда декартово произведение, а действа по-скоро като вътрешно съединение. Това е така, защото има скрит препратка между две части на съединението, в този случай псевдоним t . Този вид свързване е известно като LATERAL JOIN . За документацията :

Ако една от частите на съединението е функция, тя се третира като странична по подразбиране.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Стимулиране на производителността за PostgreSQL с HAProxy

  2. Извършване на WHERE IN на множество колони в Postgresql

  3. Тези проклети големи обекти

  4. PostgreSQL - pg_config -bash:pg_config:командата не е открита

  5. Django уникално заедно ограничение неуспех?