SELECT c1.address
FROM users c1, users c2
WHERE c1.address = c2.address
AND c2.first_name = 'John'
我不明白第三条线在做什么。我不明白它,因为这个查询返回两个单独的地址,即使在地址1必须与地址2匹配的情况下?
我错过了什么?
修改
该表有三个用户记录。其中两个用户使用相同的名字' john'
修改
另外,为什么我们需要这样做,而不是以下?
SELECT address
FROM users
WHERE first_name = 'John'
答案 0 :(得分:3)
考虑到您只选择address
,这些选择是等效的。它返回两个地址,因为有两个“Johns”。
加入地址可以让你知道 else 与John住在一起的人。例如:
SELECT c2.first_name
FROM users c1, users c2
WHERE c1.address = c2.address
AND c1.first_name = 'John'
AND c2.first_name != 'John'
会告诉你每个和“约翰”住在一起的人的名字。