Draai elke SQL-join op twee kleine voorbeeldtabellen direct in uw browser en zie welke rijen overblijven, met PostgreSQL-syntax voor INNER, LEFT, RIGHT, FULL, CROSS en self joins.
Een join combineert rijen uit twee tabellen op basis van een voorwaarde, meestal overeenkomende keys. INNER JOIN houdt alleen rijen die aan beide kanten overeenkomen. LEFT JOIN houdt elke rij uit de linkertabel en vult ontbrekende rechterkolommen met NULL, RIGHT JOIN doet het omgekeerde, FULL JOIN houdt beide, en CROSS JOIN koppelt elke rij aan elke rij.
Welke rijen elke join houdt
Venndiagrammen zijn de gebruikelijke manier om joins uit te leggen, maar ze verbergen juist wat u opbreekt: gedupliceerde rijen en NULLs. Hieronder staan twee piepkleine tabellen, customers en orders, met een klant die nooit iets bestelde en een bestelling waarvan de klant is verwijderd. Kies een join en het resultaat wordt in uw browser berekend, zodat u precies ziet welke rijen verschijnen en waarom.
INNER JOIN laat rijen zonder match vallen. LEFT JOIN houdt elke rij van de eerste tabel en zet NULL in de kolommen van de tweede tabel als er niets overeenkomt. In de demo staat Cleo in de LEFT JOIN met een lege bestelling en ontbreekt ze in de INNER JOIN.
Ja. In PostgreSQL is het woord INNER optioneel en is een kale JOIN een inner join. Het woord OUTER is ook optioneel, dus LEFT JOIN en LEFT OUTER JOIN betekenen hetzelfde.
Elke linkerrij verschijnt één keer per overeenkomende rechterrij. Een klant met drie bestellingen staat er drie keer in. Dat is correct gedrag; aggregeer met GROUP BY of join een vooraf gegroepeerde subquery als u één rij per klant nodig hebt.
Een tabel die onder twee aliassen met zichzelf wordt gejoind, gebruikt als rijen naar andere rijen in dezelfde tabel wijzen, zoals medewerkers en hun managers, of klanten en wie hen heeft doorverwezen.
PostgreSQL wel, en dat is de syntax die hier wordt getoond. MySQL kent geen FULL JOIN-keyword; de gebruikelijke omweg is een LEFT JOIN gecombineerd met een RIGHT JOIN via UNION.
Plak dit in psql of een andere SQL-editor voor Postgres om de voorbeeldtabellen na te bouwen, en draai daarna de query's uit de demo.
Bestelling 104 wijst bewust naar klant 9, die niet bestaat, zodat de outer joins iets te laten zien hebben.
De LEFT JOIN houdt Cleo met NULL in de bestelkolommen, en het IS NULL-filter houdt alleen die rijen over.
Voorbeeldtabellen in de demo
Type join
Resultaat: {n} rijen
Gemarkeerde cellen zijn door de outer join met NULL aangevuld.
SELF
Gratis beginnen · Geen creditcard nodig