-8
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'
4

1 回答 1

3

考虑到您只选择address,这些选择是等效的。它返回两个地址,因为有两个“约翰”。

加入地址可以让你弄清楚你还有谁约翰住在一起。例如:

SELECT c2.first_name
FROM users c1, users c2
WHERE c1.address = c2.address
AND c1.first_name =  'John'
AND c2.first_name != 'John'

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

于 2012-05-05T22:49:04.087 回答