SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite FULL OUTER JOIN Emulation

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 JOIN klausa, kami menggunakan LEFT JOIN klausa di SELECT second kedua sebagai gantinya dan ganti posisi cats dan dogs tabel.
  • UNION ALL klausa mempertahankan baris duplikat dari kumpulan hasil kedua kueri.
  • WHERE klausa di SELECT second kedua pernyataan menghapus baris yang sudah termasuk dalam set hasil SELECT . pertama pernyataan.

Dalam tutorial ini, Anda telah mempelajari cara menggunakan UNION ALL dan LEFT JOIN klausa untuk meniru SQLite FULL OUTER JOIN klausa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengkonversi lembar excel menjadi database sqlite di android

  2. Bagaimana cara mengatur teks ke tombol secara acak dari SQLite tanpa pengulangan?

  3. Bagaimana cara mengambil semua baris di DB saya?

  4. Masukkan Beberapa Baris dalam Kesalahan SQLite (kode kesalahan =1)

  5. Masalah dengan SQLiteOpenHelper di android 2.X dan 3.X