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 ALLoptional 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