Untuk menemukan semua pengguna dengan setidaknya satu pos dengan peringkat di atas 10, gunakan:
SELECT u.*
FROM USERS u
WHERE EXISTS(SELECT NULL
FROM POSTS p
WHERE p.user_id = u.id
AND p.rating > 10)
EXISTS tidak peduli dengan pernyataan SELECT di dalamnya - Anda dapat mengganti NULL dengan 1/0, yang akan menghasilkan kesalahan matematika untuk membagi dengan nol ... klausa WHERE.
Korelasi (WHERE p.user_id =u.id) adalah alasan mengapa ini disebut subkueri berkorelasi, dan hanya akan mengembalikan baris dari tabel USERS di mana nilai id cocok, selain perbandingan peringkat.
EXISTS juga lebih cepat, tergantung situasinya, karena mengembalikan nilai true segera setelah kriteria terpenuhi - duplikat tidak masalah.