Tutorial MySQL ini menjelaskan Cara Menggunakan SUBQUERY di MySQL dengan sintaks dan contoh.
Penjelasan
SUBQUERIES di MySQL adalah query di dalam query. Teman-teman dapat membuat SUBQUERIES di MySQL dalam statemen SQL teman-teman. Subqueries di MySQL ini dapat berada di klausa WHERE, FROM clause, atau SELECT clause.
Catatan
- 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.
Contoh:
WHERE Clause
Paling sering digunakan, SUBQUERIES di MySQL akan ditemukan dalam klausa WHERE. Subquery ini juga disebut subqueries di MySQL yang bersarang.
Sebagai contoh:
1 2 3 4 5 6 |
SELECT c.contact_id, c.last_name FROM contacts c WHERE c.site_name IN (SELECT a.site_name FROM address_book a WHERE a.address_book_id < 22); |
Bagian subquery dari pernyataan SELECT di atas adalah:
1 2 3 |
(SELECT a.site_name FROM address_book a WHERE a.address_book_id < 22); |
Subquery ini memungkinkan Anda untuk menemukan semua nilai site_name dari tabel address_book yang memiliki alamat_book_id kurang dari 22. Subquery ini kemudian digunakan untuk memfilter hasil dari query utama dengan menggunakan kondisi IN.
Subquery ini bisa ditulis sebagai INNER bergabung sebagai berikut:
1 2 3 4 5 |
SELECT c.contact_id, c.last_name FROM contacts c INNER JOIN address_book a ON c.site_name = a.site_name WHERE a.address_book_id < 22; |
INNER JOIN ini akan berjalan lebih efisien daripada subquery aslinya. Penting untuk dicatat, meskipun, bahwa tidak semua subqueries dapat ditulis ulang menggunakan MySQL JOIN.
Subquery ini bisa ditulis sebagai INNER bergabung sebagai berikut:
1 2 3 4 5 |
SELECT c.contact_id, c.last_name FROM contacts c INNER JOIN address_book a ON c.site_name = a.site_name WHERE a.address_book_id < 22; |
INNER JOIN ini akan berjalan lebih efisien daripada subquery aslinya. Penting untuk dicatat, bahwa tidak semua subqueries dapat ditulis ulang menggunakan join.
FROM Clause
Subquery juga bisa ditemukan di klausa FROM. Ini disebut tampilan sebaris.
Sebagai contoh:
1 2 3 4 5 6 |
SELECT contacts.last_name, subquery1.total_size FROM contacts, (SELECT site_name, SUM(file_size) AS total_size FROM pages GROUP BY site_name) subquery1 WHERE subquery1.site_name = contacts.site_name; |
Dalam contoh ini, kita telah membuat subquery di klausa FROM sebagai berikut:
1 2 3 |
(SELECT site_name, SUM(file_size) AS total_size FROM pages GROUP BY site_name) subquery1 |
Subquery ini telah di alias dengan nama subquery1. Ini akan menjadi nama yang digunakan untuk referensi subquery ini atau bidangnya.
SELECT Clasuse
Sebuah Subquery juga dapat ditemukan dalam klausa SELECT. Ini umumnya digunakan saat teman-teman ingin mengambil perhitungan menggunakan fungsi agregat seperti fungsi SUM, COUNT, MIN, MAX, atau AVG, namun teman-teman ttidak ingin fungsi agregat diterapkan ke query utama.
Sebagai contoh:
1 2 3 4 5 |
SELECT p1.site_name, (SELECT MAX(file_size) FROM pages p2 WHERE p1.site_id = p2.site_id) subquery2 FROM pages p1; |
Dalam contoh ini, kami telah membuat subquery di klausa SELECT sebagai berikut:
1 2 3 |
(SELECT MAX(file_size) FROM pages p2 WHERE p1.site_id = p2.site_id) subquery2 |
Subquery telah diwakili dengan nama subquery2. Ini akan menjadi nama yang digunakan untuk referensi subquery ini atau bidangnya.
Trik untuk menempatkan subquery pada klausa SELECT adalah bahwa subquery harus mengembalikan satu nilai. Inilah sebabnya fungsi agregat seperti fungsi SUM, COUNT, MIN, MAX, atau AVG biasa digunakan di subquery.