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