Sebagian pertanyaan tidak bisa dijawab satu query datar. Subquery memecah pertanyaan besar menjadi bagian-bagian yang bisa dibaca. Section ini melatih posisi-posisi subquery di MySQL dan menilai kapan subquery lebih jelas dibanding join.
Kenalan dengan subquery di MySQL: query di dalam query yang ditulis dalam tanda kurung, logika evaluasinya yang berjalan lebih dulu sebelum dipakai query luarnya, tiga posisi utama di WHERE, SELECT, dan FROM, serta contoh pertama menyaring produk dengan harga di atas rata-rata.
Buka → # Scalar SubqueryBedah scalar subquery di MySQL: subquery yang mengembalikan tepat satu baris satu kolom sehingga bisa dipakai di tempat nilai biasa berada, perilaku subquery kosong yang diam-diam menjadi NULL, dan error 1242 yang muncul saat subquery mengembalikan lebih dari satu baris.
Buka → # Subquery dalam WHEREPakai subquery di klausa WHERE MySQL: IN dan = ANY untuk keanggotaan dari hasil query lain, bedah ALL versus ANY dengan angka konkret, agregat sebagai ambang penyaringan, gotcha NOT IN yang menghasilkan kosong karena NULL, hingga pengantar subquery berkorelasi.
Buka → # Subquery dalam FROMPakai subquery setelah klausa FROM MySQL sebagai derived table: kewajiban alias yang menimbulkan error 1248 bila dilanggar, pola klasik agregat dulu lalu join untuk nama pelanggan, serta trik memfilter hasil agregat yang tidak bisa dilakukan WHERE biasa.
Buka → # Subquery dalam SELECTSelipkan subquery di daftar SELECT MySQL sebagai kolom kalkulasi: hitung jumlah transaksi per produk dari tabel lain, tangani baris tanpa pasangan dengan IFNULL, pakai subquery di ORDER BY, dan timbang keterbacaan melawan performa pola ini.
Buka → # EXISTS dan NOT EXISTSBedah operator EXISTS dan NOT EXISTS di MySQL: konvensi SELECT 1, perilaku berhenti di baris pertama yang ditemukan, NOT EXISTS sebagai anti-join untuk mencari yang belum punya pasangan, dan perbandingan nyatanya melawan NOT IN yang gagal diam-diam karena NULL.
Buka → # Correlated SubqueryBedah correlated subquery di MySQL: subquery yang merujuk kolom tabel query luar sehingga dievaluasi ulang untuk setiap baris, contoh produk dengan harga di atas rata-rata kategorinya sendiri, EXISTS berkorelasi, dan biaya per baris di tabel besar.
Buka → # Subquery vs JOINBandingkan subquery dan JOIN di MySQL pada soal yang sama: pelanggan dengan pesanan lewat JOIN+DISTINCT versus EXISTS, total belanja per pelanggan lewat join versus derived table, tabel keputusan keterbacaan performa dan semantik, serta situasi yang menuntut salah satunya.
Buka →