sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql vänster yttre koppling på json-array

För att svara på din fråga:Ja, det är möjligt och din fråga gör precis det. Vi kan bevisa det genom att införa en tredje rad i foo tabell:http://sqlfiddle.com/#!15/06dfe/2

Ditt problem är inte med LEFT JOIN till json_array_elements men med implicit tvärfog i sidled. Din fråga motsvarar:

SELECT *
FROM foo 
  CROSS JOIN LATERAL json_array_elements (foo.bars :: json) foo_bars 
  LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/5

Det du vill ha är en lateral vänsterkoppling mellan foo och json_array_elements :

SELECT *
FROM foo LEFT JOIN LATERAL
    json_array_elements (foo.bars :: json) foo_bars ON true
LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/6




  1. Välj en kolumn om den andra kolumnen är null

  2. Hur du skyddar din MySQL- eller MariaDB-databas från SQL-injektion:Del två

  3. Hur hjälper pgBouncer till att påskynda Django

  4. Vilken MySQL-fråga är snabbare?