Ringkasan :dalam tutorial ini, Anda akan mempelajari cara mengemulasi SQLite full outer join menggunakan UNION dan LEFT JOIN klausa.
Pengantar SQL FULL OUTER JOIN klausa
Secara teori, hasil dari FULL OUTER JOIN adalah kombinasi dari LEFT JOIN dan RIGHT JOIN . Kumpulan hasil dari gabungan luar penuh memiliki NULL nilai untuk setiap kolom tabel yang tidak memiliki baris yang cocok di tabel lain. Untuk baris yang cocok, FULL OUTER JOIN menghasilkan satu baris dengan nilai dari kolom baris di kedua tabel.
Gambar berikut mengilustrasikan hasil dari FULL OUTER JOIN klausa:
Lihat cats berikut dan dogs tabel.
-- create and insert data into the dogs table
CREATE TABLE dogs (
type TEXT,
color TEXT
);
INSERT INTO dogs(type, color)
VALUES('Hunting','Black'), ('Guard','Brown');
-- create and insert data into the cats table
CREATE TABLE cats (
type TEXT,
color TEXT
);
INSERT INTO cats(type,color)
VALUES('Indoor','White'),
('Outdoor','Black');Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menggunakan FULL OUTER JOIN klausa untuk meminta data dari dogs dan cats tabel.
SELECT *
FROM dogs
FULL OUTER JOIN cats
ON dogs.color = cats.color;Code language: SQL (Structured Query Language) (sql) Berikut hasil dari pernyataan di atas:
| Jenis | Warna | Ketik | Warna |
|---|---|---|---|
| Berburu | Hitam | Luar ruangan | Hitam |
| Penjaga | Coklat | NULL | NULL |
| NULL | NULL | Dalam ruangan | Putih |
Sayangnya, SQLite tidak mendukung RIGHT JOIN klausa dan juga FULL OUTER JOIN ayat. Namun, Anda dapat dengan mudah meniru FULL OUTER JOIN dengan menggunakan LEFT JOIN klausa.
Emulasi SQLite full outer join
Pernyataan berikut mengemulasi FULL OUTER JOIN klausa dalam SQLite:
SELECT d.type,
d.color,
c.type,
c.color
FROM dogs d
LEFT JOIN cats c USING(color)
UNION ALL
SELECT d.type,
d.color,
c.type,
c.color
FROM cats c
LEFT JOIN dogs d USING(color)
WHERE d.color IS NULL;Code language: SQL (Structured Query Language) (sql) Cara kerja kueri.
- Karena SQLilte tidak mendukung
RIGHT JOINklausa, kami menggunakanLEFT JOINklausa diSELECTsecond kedua sebagai gantinya dan ganti posisicatsdandogstabel. UNION ALLklausa mempertahankan baris duplikat dari kumpulan hasil kedua kueri.WHEREklausa diSELECTsecond kedua pernyataan menghapus baris yang sudah termasuk dalam set hasilSELECT. pertama pernyataan.
Dalam tutorial ini, Anda telah mempelajari cara menggunakan UNION ALL dan LEFT JOIN klausa untuk meniru SQLite FULL OUTER JOIN klausa.