Denne adfærd er korrekt i henhold til ANSI-standarder.
Hvis det ukvalificerede kolonnenavn ikke løses i det indre omfang, vil det ydre omfang blive taget i betragtning. Så effektivt laver du en utilsigtet korreleret underforespørgsel.
Så længe tabellen profile indeholder mindst én række derefter
FROM users
WHERE user_id IN (
SELECT user_id FROM profile
)
vil ende med at matche alle rækker i users (undtagen hvor users.user_id IS NULL som WHERE NULL IN (NULL) ikke vurderes til sandt). For at undgå dette mulige problem kan du bruge to delnavne.
DELETE FROM users
WHERE user_id IN (SELECT p.user_id
FROM profile p)
Ville give fejlen