元组变量 - 有人可以向我解释以下SQL语句

时间:2012-05-05 22:41:40

标签: sql

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'

1 个答案:

答案 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'

会告诉你每个和“约翰”住在一起的人的名字。