Di SQLite, INTERSECT
operator digunakan untuk membuat gabungan SELECT
pernyataan yang mengembalikan perpotongan hasil SELECT
kiri dan kanan pernyataan. Dengan kata lain, ini menggabungkan dua kueri, tetapi hanya mengembalikan baris yang dikembalikan di kedua kueri.
Contoh
Misalkan kita memiliki tabel berikut:
SELECT * FROM Employees;
SELECT * FROM Customers;
Hasil:
EmployeeId EmployeeName ---------- ------------ 1 Bart 2 Jan 3 Ava 4 Rohit 5 Monish 6 Monish 7 Monish CustomerId CustomerName ---------- ------------ 1 Mia 2 Rohit 3 Peter 4 Ava 5 Monish 6 Monish
Kita dapat menggunakan INTERSECT
operator untuk mengembalikan karyawan yang juga pelanggan:
SELECT EmployeeName FROM Employees
INTERSECT
SELECT CustomerName FROM Customers;
Hasil:
EmployeeName ------------ Ava Monish Rohit
Jadi kami hanya mendapatkan nilai yang muncul di Employees
tabel yang juga muncul di Customers
meja.
Implementasi SQLite dari INTERSECT
operator mengembalikan baris yang berbeda saja. Jadi contoh di atas mengembalikan hanya satu baris untuk Monish, meskipun ada beberapa karyawan dan beberapa pelanggan dengan nama itu.
RDBMS lain memungkinkan kami untuk menyertakan duplikat dalam hasil dengan menerima ALL
optional opsional kata kunci dengan INTERSECT
operator, tetapi SQLite tidak (setidaknya, tidak pada saat penulisan). Jangan ragu untuk memeriksa dokumentasi SQLite jika ada perubahan.
Kueri Alternatif
Anda bisa mendapatkan hasil yang sama tanpa menggunakan INTERSECT
operator. Misalnya, kita dapat menulis ulang contoh pertama kita menjadi ini:
SELECT
DISTINCT EmployeeName
FROM Employees e
WHERE EXISTS (SELECT CustomerName FROM Customers c
WHERE e.EmployeeName = c.CustomerName);
Hasil:
EmployeeName ------------ Ava Rohit Monish