Perilaku ini benar menurut standar ANSI.
Jika nama kolom yang tidak memenuhi syarat tidak diselesaikan di lingkup dalam maka lingkup luar akan dipertimbangkan. Jadi secara efektif Anda melakukan subkueri berkorelasi yang tidak disengaja.
Selama tabel profile
berisi setidaknya satu baris maka
FROM users
WHERE user_id IN (
SELECT user_id FROM profile
)
akhirnya akan cocok dengan semua baris di users
(kecuali di mana users.user_id IS NULL
sebagai WHERE NULL IN (NULL)
tidak bernilai benar). Untuk menghindari kemungkinan masalah ini, Anda dapat menggunakan dua nama bagian.
DELETE FROM users
WHERE user_id IN (SELECT p.user_id
FROM profile p)
Akan memberikan kesalahan