Learn
← Previous Next →

Hari 23: EXISTS & NOT EXISTS

50 min Last updated 25 Mar 2026

EXISTS — Cek Keberadaan Data

EXISTS mengembalikan TRUE jika subquery menghasilkan setidaknya 1 baris. Lebih efisien daripada IN untuk data besar karena berhenti di baris pertama yang ditemukan.

-- Pelanggan yang pernah memesan
SELECT pl.nama, pl.kota
FROM pelanggan pl
WHERE EXISTS (
  SELECT 1 FROM pesanan p WHERE p.pelanggan_id = pl.id
);

-- EXISTS vs IN (hasil sama, performa beda pada data besar)
-- Dengan IN:
SELECT nama FROM pelanggan
WHERE id IN (SELECT DISTINCT pelanggan_id FROM pesanan);

NOT EXISTS — Data yang Tidak Punya Pasangan

-- Pelanggan yang BELUM PERNAH memesan
SELECT pl.nama, pl.kota
FROM pelanggan pl
WHERE NOT EXISTS (
  SELECT 1 FROM pesanan p WHERE p.pelanggan_id = pl.id
);
💡 SELECT 1 di dalam EXISTS hanya untuk efisiensi — kontennya tidak penting, hanya keberadaan baris yang diperiksa.

💡 Notice: EXISTS tidak peduli isi SELECT 1 — hanya mengecek apakah ada baris yang cocok.

Assignment

Tampilkan nama dan jabatan karyawan yang merupakan MANAJER (punya bawahan) — gunakan EXISTS untuk mengecek apakah ada karyawan lain dengan manager_id = karyawan ini.

Expected output:

5 row(s) returned
SQL query.sql
Solution
Output
⏳ Loading DB...