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
EXISTS
operator mengevaluasi menjadi benar. Oleh karena itu, kueri menyertakan pelanggan dalam kumpulan hasil. - Jika id pelanggan tidak ada di
Invoices
tabel, subquery tidak mengembalikan baris yang menyebabkanEXISTS
operator 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.