SELECT c1.address
FROM users c1, users c2
WHERE c1.address = c2.address
AND c2.first_name = 'John'
我不明白第三行在做什么。我不明白,因为此查询返回两个单独的地址,即使在它说地址 1 必须与地址 2 匹配的情况下?
我错过了什么?
编辑:
该表包含三条用户记录。 其中两个用户共享相同的名字"约翰"
编辑:
另外,为什么我们需要这样做,而不是以下操作?
SELECT address
FROM users
WHERE first_name = 'John'
考虑到您只选择address
,这些选择是等效的。 它返回两个地址,因为有两个"Johns"。
加入地址可以让你弄清楚还有谁和约翰住在一起。 例如:
SELECT c2.first_name
FROM users c1, users c2
WHERE c1.address = c2.address
AND c1.first_name = 'John'
AND c2.first_name != 'John'
会告诉你每个与"约翰"住在一起的人的名字。