Dalam SQLite, EXCEPT
operator dapat digunakan untuk membuat senyawa SELECT
pernyataan yang mengembalikan subset baris yang dikembalikan oleh SELECT
kiri yang tidak dikembalikan oleh SELECT
right yang benar .
Contoh
Misalkan kita memiliki tabel berikut:
SELECT * FROM Teachers;
SELECT * FROM Students;
Hasil:
TeacherId TeacherName --------- ----------- 1 Warren 2 Ben 3 Cathy 4 Cathy 5 Bill 6 Bill StudentId StudentName --------- ----------- 1 Faye 2 Jet 3 Spike 4 Ein 5 Warren 6 Bill
Kita dapat menggunakan EXCEPT
operator untuk mengembalikan guru yang bukan juga siswa:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students;
Hasil:
TeacherName ----------- Ben Cathy
Jadi kita hanya mendapatkan nilai yang muncul di Teachers
tabel yang juga tidak muncul di Students
meja.
Kita bisa mendapatkan hasil yang berbeda, tergantung tabel mana yang di kiri dan mana yang di kanan. Berikut adalah contoh yang menempatkan Students
tabel di sebelah kiri dan Teachers
di sebelah kanan:
SELECT StudentName FROM Students
EXCEPT
SELECT TeacherName FROM Teachers;
Hasil:
StudentName ----------- Ein Faye Jet Spike
Kali ini kami mendapatkan siswa yang bukan juga guru.
EXCEPT
SQLite operator mengembalikan baris yang berbeda saja. Jadi dalam contoh kita, hanya satu baris yang dikembalikan untuk Cathy
, meskipun ada dua guru dengan nama itu.
Beberapa RDBMS lain memungkinkan kami menyertakan duplikat dalam hasil dengan menerima ALL
optional opsional kata kunci dengan EXCEPT
operator, tetapi SQLite tidak (setidaknya, tidak pada saat penulisan). Jangan ragu untuk memeriksa dokumentasi SQLite jika ada perubahan.
Alternatif
Anda bisa mendapatkan hasil yang sama tanpa menggunakan EXCEPT
operator. Misalnya, kita dapat menulis ulang contoh pertama kita menjadi ini:
SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName);
Hasil:
TeacherName ----------- Ben Cathy