Subquery — SQL

Subquery adalah query di dalam query lain. Dievaluasi terlebih dahulu, hasilnya digunakan oleh query utama. Scalar subquery (mengembalikan satu nilai): SELECT *

Subquery adalah query di dalam query lain. Dievaluasi terlebih dahulu, hasilnya digunakan oleh query utama.

Scalar subquery (mengembalikan satu nilai):

SELECT * FROM products
WHERE price > (SELECT AVG(price) FROM products);
-- Produk yang harganya di atas rata-rata

IN subquery (mengembalikan daftar):

SELECT * FROM users
WHERE id IN (SELECT DISTINCT user_id FROM orders);
-- User yang pernah memesan

EXISTS subquery:

SELECT * FROM users u
WHERE EXISTS (
    SELECT 1 FROM orders o WHERE o.user_id = u.id
);
-- Sama: user yang pernah memesan (lebih efisien untuk tabel besar)

NOT IN / NOT EXISTS:

SELECT * FROM users
WHERE id NOT IN (SELECT DISTINCT user_id FROM orders);
-- User yang BELUM pernah memesan

Subquery di SELECT:

SELECT name,
    (SELECT COUNT(*) FROM posts WHERE posts.user_id = users.id) as post_count
FROM users;
-- Jumlah post per user (correlated subquery)

Yang akan kamu pelajari