BAB 12: Subquery MySQL Lengkap – Subquery pada SELECT, WHERE, dan FROM

BAB 12: Subquery MySQL Lengkap – Subquery pada SELECT, WHERE, dan FROM

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

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

SubqueryJOIN
Lebih mudah dipahamiLebih efisien
Cocok untuk query sederhanaCocok untuk data besar
Kadang lebih lambatLebih 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.