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