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


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'

会告诉你每个与"约翰"住在一起的人的名字。

最新更新