Subquery adalah query di dalam query SQL lainnya. Subquery digunakan untuk mengambil data sementara yang akan dipakai oleh query utama.
Subquery biasanya ditempatkan di dalam tanda kurung ( ).
Subquery sangat berguna untuk:
- Query kompleks
- Perbandingan data antar tabel
- Pengolahan data bertingkat
Contents
2. Subquery pada SELECT
Subquery pada SELECT digunakan untuk menampilkan hasil query tambahan sebagai kolom.
Contoh Subquery pada SELECT:
SELECT
nama,
(SELECT COUNT(*) FROM mahasiswa) AS total_mahasiswa
FROM mahasiswa;
Contoh lain:
SELECT
nama,
(SELECT AVG(umur) FROM mahasiswa) AS rata_rata_umur
FROM mahasiswa;
3. Subquery pada WHERE
Subquery pada WHERE digunakan untuk memfilter data berdasarkan hasil query lain.
Contoh Subquery pada WHERE:
SELECT nama
FROM mahasiswa
WHERE umur > (SELECT AVG(umur) FROM mahasiswa);
Subquery dengan IN:
SELECT nama
FROM mahasiswa
WHERE jurusan_id IN (
SELECT id FROM jurusan WHERE nama_jurusan = 'Teknik Informatika'
);
4. Subquery pada FROM
Subquery pada FROM digunakan untuk membuat tabel sementara (derived table) yang dapat diolah seperti tabel biasa.
Contoh Subquery pada FROM:
SELECT jurusan_id, rata_umur
FROM (
SELECT jurusan_id, AVG(umur) AS rata_umur
FROM mahasiswa
GROUP BY jurusan_id
) AS data_rata;
5. Subquery vs JOIN
| Subquery | JOIN |
|---|---|
| Lebih mudah dipahami | Lebih efisien |
| Cocok untuk query sederhana | Cocok untuk data besar |
| Kadang lebih lambat | Lebih cepat |
6. Subquery Bersarang
Subquery dapat dibuat lebih dari satu tingkat.
SELECT nama
FROM mahasiswa
WHERE jurusan_id = (
SELECT id
FROM jurusan
WHERE fakultas_id = (
SELECT id FROM fakultas WHERE nama_fakultas = 'Teknik'
)
);
Kesimpulan
Subquery memungkinkan penggunaan query SQL yang lebih fleksibel dan kompleks. Dengan memahami subquery pada SELECT, WHERE, dan FROM, pengguna dapat mengolah data secara bertingkat dan dinamis. Subquery sangat berguna dalam analisis data dan pembuatan laporan lanjutan di MySQL.