Saya mencoba untuk belajar SQL dan mengalami kesulitan untuk memahami pernyataan EXISTS. Saya menemukan kutipan tentang "ada" dan tidak memahami sesuatu:
Dengan menggunakan operator existing, subkueri Anda bisa mengembalikan nol, satu, atau banyak baris, dan ketentuannya hanya memeriksa apakah subkueri mengembalikan baris apa pun. Jika Anda melihat klausa pilih dari subkueri, Anda akan melihat bahwa itu terdiri dari satu literal (1); karena kondisi dalam kueri penampung hanya perlu mengetahui berapa banyak baris yang dikembalikan, data aktual yang dikembalikan subkueri tidak relevan.
Yang tidak saya mengerti adalah bagaimana kueri luar mengetahui baris mana yang diperiksa subkueri? Sebagai contoh:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Saya memahami bahwa jika id dari tabel pemasok dan pesanan cocok, subkueri akan mengembalikan nilai true dan semua kolom dari baris yang cocok di tabel pemasok akan dikeluarkan. Apa yang tidak saya dapatkan adalah bagaimana subquery mengkomunikasikan baris spesifik mana (katakanlah baris dengan supplier id 25) harus dicetak jika hanya benar atau salah yang dikembalikan.
Tampak bagi saya bahwa tidak ada hubungan antara kueri luar dan subkueri.
