sammanfattning: i den här handledningen lär du dig hur du använder PostgreSQL LEFT JOIN – klausulen för att välja data från flera tabeller.
introduktion till PostgreSQL LEFT JOIN clause
Antag att du har två tabeller:A ochB.,
varje rad i tabellen A kan ha noll eller många motsvarande rader i tabellen B medan varje rad i tabellen B har en och endast en motsvarande rad i tabellen A .
för att välja data från tabellenA som kanske eller kanske inte har motsvarande rader i tabellenB använder du klausulenLEFT JOIN.,
följande uttalande illustrerar syntaxen LEFT JOIN som går med i tabellen A med tabellen B :
Code language: SQL (Structured Query Language) (sql)
för att gå med i tabellen A med tabellen A. div id=”41cbd4ed8b”>
– tabellen med en vänster koppling följer du följande steg:
- ange först kolumnerna i båda tabellerna som du vill välja data från i
SELECT– klausulen. - för det andra, ange den vänstra tabellen (Tabell
A) IFROM– klausulen., - tredje, ange den högra tabellen (Tabell
B) ILEFT JOINoch kopplingsförhållandet efter nyckelordetON.
LEFT JOIN börjar välja data från den vänstra tabellen. För varje rad i den vänstra tabellen jämförs värdet i kolumnenpkamed värdet för varje rad i kolumnen fka I den högra tabellen.,
om dessa värden är lika skapar den vänstra kopplingsklausulen en ny rad som innehåller kolumner som visas iSELECT – klausulen och lägger till den här raden i resultatuppsättningen.
om dessa värden inte är lika skapar klausulen vänster koppling också en ny rad som innehåller kolumner som visas i klausulen SELECT. Dessutom fyller den kolumnerna som kommer från höger bord med NULL.,
följande Venn-diagram visar hurLEFT JOIN – klausulen fungerar:
Observera attLEFT JOIN också kallasLEFT JOINc78884287f ” >
.
PostgreSQL LEFT JOIN examples
låt oss titta på följandefilm ochinventory tabeller från provdatabasen.,
varje rad i tabellen film kan ha noll eller många rader i tabellen inventory. Varje rad i tabellen inventory har en och endast en rad i tabellen film.
kolumnenfilm_id fastställer länken mellan tabellernafilm ochinventory.,
följande uttalande använderLEFT JOIN – klausulen för att ansluta tillfilm – tabellen med tabelleninventory:
När en rad från tabellen filminte har någon matchande rad i kolumnen inventoryär värdet på kolumnen inventory_id NULL.,
följande uttalande lägger till enWHERE – klausul för att hitta de filmer som inte finns i inventeringen:
följande uttalande returnerar samma resultat., Skillnaden är att den använder tabellaliasen för att göra frågan mer kortfattad:
om båda tabellerna har samma kolumnnamn som används i ON – klausulen kan du använda USING syntax så här:
denna teknik är användbar när du vill välja rader från en tabell som inte har matchande rader i en annan tabell.