sql >> Database teknologi >  >> RDS >> SQLite

SQLite FULD YDRE JOIN-emulering

Oversigt :i denne øvelse lærer du, hvordan du emulerer SQLite fuld ydre joinforbindelse ved hjælp af UNION og LEFT JOIN klausuler.

Introduktion til SQL FULD YDRE JOIN klausul

I teorien er resultatet af FULL YDRE JOIN er en kombination af en LEFT JOIN og en RIGHT JOIN . Resultatsættet af den fulde ydre joinforbindelse har NULL værdier for hver kolonne i tabellen, der ikke har en matchende række i den anden tabel. For de matchende rækker er FULD YDRE JOIN producerer en enkelt række med værdier fra kolonner i rækkerne i begge tabeller.

Følgende billede illustrerer resultatet af FULL YDRE JOIN klausul:

Se følgende katte og hunde tabeller.

-- opret og indsæt data i hundetabellenCREATE TABLE dogs (skriv TEXT, color TEXT);INSERT INTO dogs(type, color) VALUES('Hunting','Black'), ('Guard', 'Brun');-- opret og indsæt data i kattetabellen CREATE TABLE cats (skriv TEXT, color TEXT);INSERT INTO cats(type,color) VALUES('Indoor','White'), ('Udendørs',' Sort'); Kodesprog:SQL (Structured Query Language) (sql)

Følgende sætning bruger FULL OUTER JOIN klausul for at forespørge data fra hundene og katte tabeller.

VÆLG *FRA hunde FULDSTÆNDIG YDRE JOIN katte PÅ dogs.color =cats.color; Kodesprog:SQL (Structured Query Language) (sql) 

Følgende viser resultatet af udsagnet ovenfor:

Type Farve Typ Farve
Jagt Sort Udendørs Sort
Vagt Brun NULL NULL
NULL NULL Indendørs Hvid

Desværre understøtter SQLite ikke RIGHT JOIN klausulen og også FULL OUTER JOIN klausul. Du kan dog nemt efterligne FULL OUTER JOIN ved at bruge LEFT JOIN klausul.

Emulering af SQLite fuld ydre joinforbindelse

Følgende sætning emulerer FULL OUTER JOIN klausul i SQLite:

VÆLG d.type, d.color, c.type, c.colorFROM hunde dLEFT JOIN cats c BRUGE(color)UNION ALLSELECT d.type, d.color, c.type, c.colorFROM cats cLEFT JOIN dogs d USING(color)WHERE d.color IS NULL; Kodesprog:SQL (Structured Query Language) (sql)

Sådan fungerer forespørgslen.

  • Fordi SQLilte ikke understøtter RIGHT JOIN klausul, bruger vi LEFT JOIN klausul i den anden SELECT sætning i stedet og skift catss positioner og hunde tabeller.
  • UNION ALL klausul beholder de duplikerede rækker fra resultatsættene for begge forespørgsler.
  • HVOR klausul i den anden SELECT sætning fjerner rækker, der allerede er inkluderet i resultatsættet af den første SELECT erklæring.

I denne øvelse har du lært, hvordan du bruger UNION ALL og LEFT JOIN klausuler til at emulere SQLite FULL OUTER JOIN klausul.


  1. 5 tegn på, at du er vokset ud af Excel

  2. Oracle SQL Developer 21.4.2 og SQLcl 21.4.1 er nu tilgængelige

  3. refererer fremmednøgle altid til en unik nøgle i en anden tabel?

  4. Opret et SQL Server Agent Job ved hjælp af T-SQL