Subquery adalah queri dalam queri, bisa disebut juga sebagai permintaan dalam permintaan atau permintaan bersarang. Subquery dapat digunakan di mana pun ekspresi diizinkan. Subquery adalah ekspresi kueri yang terdapat di dalam tanda kurung. Subquery dapat digunakan dengan pernyataan SELECT, INSERT, UPDATE, atau DELETE.

Subquery MySQL disebut queri dalam, sedangkan queri yang berisi subquery disebut queri luar. Ada lebih dari satu cara untuk menjalankan tugas SQL. Banyak subquery yang bisa diganti dengan SQL join. Alasan menggunakan SQL join adalah biasanya lebih cepat.

  • SUBQUERIES di MySQL bisa disebut juga dengan INNER QUERY atau INNER SELECT.
  • SUBQUERIES dI MySQL, permintaan utama yang berisi SUBQUERIES di MySQL bisa juga disebut dengan OUTER QUERY atau OUTER SELECT.

Table dalam database yang akan saya gunakan hanya dua dalam tutorial sederhana ini. Seperti biasa saya akan menggunakan database db_belajar, table tb_anggota dan tb_absensi.

Tambahkan data ke dalam tabel di atas:

Misalnya untuk mencari umur paling tua dari data di atas :

SELECT * FROM `tb_anggota` WHERE umur = (SELECT MAX(umur) FROM `tb_anggota`)

Atau akan menampilkan data hanya yang memiliki umur di bawah rata-rata umur anggota:

SELECT * FROM `tb_anggota` WHERE umur < (SELECT AVG(umur) FROM `tb_anggota`)

Jika kita akan mencari data anggota yang sama sekali tidak ada di table tb_absensi :

SELECT * FROM `tb_anggota` WHERE anggota_id NOT IN (SELECT DISTINCT anggota_id FROM `tb_absensi`)

Bisa juga menggunakan WHERE untuk mencari data absensi pada tanggal tertentu:

SELECT * FROM `tb_anggota` WHERE anggota_id IN (SELECT DISTINCT anggota_id FROM `tb_absensi` WHERE tanggal = ‘2019-07-27’)

Sebenarnya penggunaan SubQuery akan bisa menjadi sangat kompleks jika kedalaman kuerinya lebih dari satu. Sebisa mungkin menggunakan pernyataan JOIN untuk melakukan operasi seperti ini. Sebuah kueri LEFT / OUTER JOIN bisa lebih cepat daripada subquery yang setara karena server mungkin dapat mengoptimalkannya lebih baik. Kemudian pengunaan IN adalah operator yang sangat lambat, karena SQL biasanya mengevaluasinya sebagai serangkaian klausa WHERE yang dipisahkan oleh “OR”.

REFERENSI

  1. https://id.wikipedia.org/wiki/SQL 
  2. https://www.yudana.id/tag/mysql/ 
  3. https://kursuswebprogramming.com/cara-menggunakan-subqueries-di-mysql/

Created by: Rahmi Aulia Astri, Lena Oktavianis

Sumber gambar