Sammanfattning :i den här handledningen kommer du att lära dig hur du använder SQLite LEFT JOIN
sats för att söka efter data från flera tabeller.
Introduktion till SQLite LEFT JOIN
klausul
Liknar INNER JOIN
satsen, LEFT JOIN
sats är en valfri sats i SELECT
påstående. Du använder LEFT JOIN
klausul för att söka efter data från flera relaterade tabeller.
Anta att vi har två tabeller:A och B.
- A har m- och f-kolumner.
- B har n och f kolumner.
För att utföra koppling mellan A och B med LEFT JOIN
klausul använder du följande uttalande:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;
Code language: SQL (Structured Query Language) (sql)
Uttrycket A.f = B.f
är ett villkorligt uttryck. Förutom likhetsoperatorn (=) kan du använda andra jämförelseoperatorer som större än (>), mindre än (<) etc.
Satsen returnerar en resultatuppsättning som inkluderar:
- Rader i tabell A (vänster tabell) som har motsvarande rader i tabell B.
- Rader i tabellen A-tabellen och raderna i tabellen B fyllda med
NULL
värden om raden från tabell A inte har några motsvarande rader i tabell B.
Med andra ord, alla rader i tabell A ingår i resultatuppsättningen oavsett om det finns matchande rader i tabell B eller inte.
Om du har en WHERE
satsen i satsen, search_condition
i WHERE
satsen tillämpas efter matchningen av LEFT JOIN
klausul slutförs.
Se följande illustration av LEFT JOIN
klausul mellan A- och B-tabellerna.
Alla rader i tabell A ingår i resultatuppsättningen.
Eftersom den andra raden (a2,2)
har inte en motsvarande rad i tabell B, LEFT JOIN
klausul skapar en falsk rad fylld med NULL
.
Följande Venn-diagram illustrerar LEFT JOIN
klausul.
Det noteras att LEFT OUTER JOIN
är detsamma som LEFT JOIN
.
SQLite LEFT JOIN
exempel
Vi kommer att använda artists
och albums
tabeller i exempeldatabasen för demonstration.
Ett album tillhör en artist. En artist kan dock ha noll eller fler album.
För att hitta artister som inte har några album genom att använda LEFT JOIN
klausul väljer vi artister och deras motsvarande album. Om en artist inte har några album, värdet på AlbumId
kolumnen är NULL.
För att först visa de artister som inte har några album har vi två val:
- Använd först
ORDER BY
sats för att lista raderna varsAlbumId
ärNULL
värden först. - Använd för det andra
WHERE
sats ochIS NULL
operatör för att bara lista artister som inte har några album.
Följande sats använder LEFT JOIN
satsen med ORDER BY
klausul.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
Prova det
Följande sats använder LEFT JOIN
sats med WHERE
klausul.
SELECT
artists.ArtistId
, AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
WHERE
AlbumId IS NULL;
Code language: SQL (Structured Query Language) (sql)
Prova det
I den här handledningen har du lärt dig hur du använder SQLite LEFT JOIN
sats för att söka efter data från flera tabeller.