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 JOIN
och 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 kolumnenpka
med 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 JOIN
c78884287f ” >
.
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 film
inte 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.