Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite EXISTS operator untuk menguji keberadaan baris yang dikembalikan oleh subquery.
Pengantar SQLite EXISTS operator
EXISTS operator adalah operator logika yang memeriksa apakah subquery mengembalikan baris apa pun.
Berikut adalah sintaks dasar dari EXISTS operator:
EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql)
Dalam sintaks ini, subquery adalah SELECT pernyataan yang mengembalikan nol atau lebih baris.
Jika subquery mengembalikan satu atau lebih baris, EXISTS operator mengembalikan benar. Jika tidak, kode EXISTS operator mengembalikan false atau NULL .
Perhatikan bahwa jika subquery mengembalikan satu baris dengan NULL , hasil dari EXISTS operator masih benar karena set hasil berisi satu baris dengan NULL.
Untuk meniadakan EXISTS operator, Anda menggunakan NOT EXISTS operator sebagai berikut:
NOT EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)
NOT EXISTS operator mengembalikan nilai true jika subquery tidak mengembalikan baris.
SQLite EXISTS contoh operator
Lihat Customers berikut ini dan Invoices tabel dari database sampel:
Pernyataan berikut menemukan pelanggan yang memiliki faktur:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
EXISTS (
SELECT
1
FROM
Invoices
WHERE
CustomerId = c.CustomerId
)
ORDER BY
FirstName,
LastName;
Code language: SQL (Structured Query Language) (sql) Gambar berikut menunjukkan kumpulan hasil parsial:
Dalam contoh ini, untuk setiap pelanggan, kode EXISTS operator memeriksa apakah id pelanggan ada di invoices tabel.
- Jika ya, subquery mengembalikan satu baris dengan nilai 1 yang menyebabkan
EXISTSoperator mengevaluasi menjadi benar. Oleh karena itu, kueri menyertakan pelanggan dalam kumpulan hasil. - Jika id pelanggan tidak ada di
Invoicestabel, subquery tidak mengembalikan baris yang menyebabkanEXISTSoperator untuk mengevaluasi ke false, maka kueri tidak menyertakan pelanggan dalam kumpulan hasil.
Perhatikan bahwa Anda dapat menggunakan IN operator alih-alih EXISTS operator dalam hal ini untuk mencapai hasil yang sama:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
CustomerId IN (
SELECT
CustomerId
FROM
Invoices
)
ORDER BY
FirstName,
LastName;Code language: SQL (Structured Query Language) (sql)
Setelah subquery mengembalikan baris pertama, EXISTS operator berhenti mencari karena dapat menentukan hasilnya. Di sisi lain, IN operator harus memindai semua baris yang dikembalikan oleh subquery untuk menentukan hasilnya.
Secara umum, EXISTS operator lebih cepat dari IN operator jika set hasil yang dikembalikan oleh subquery besar. Sebaliknya, IN operator lebih cepat dari EXISTS operator jika set hasil yang dikembalikan oleh subquery kecil.
SQLite NOT EXISTS contoh operator
Lihat tabel Artis dan Album berikut dari database sampel:
Kueri ini menemukan semua artis yang tidak memiliki album di tabel Album:
SELECT
*
FROM
Artists a
WHERE
NOT EXISTS(
SELECT
1
FROM
Albums
WHERE
ArtistId = a.ArtistId
)
ORDER BY Name;Code language: SQL (Structured Query Language) (sql) Berikut adalah sebagian outputnya:
Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQLite EXISTS operator untuk menguji keberadaan baris yang dikembalikan oleh subquery.