0

我必须要表格,比如 A 和 B 以及一个不可为空的公共列 X 。

查询一:

SELECT COUNT(*)
FROM A
WHERE A.X in                       
(SELECT distinct(B.X) FROM B)

查询 2:

SELECT COUNT(*)
FROM B
WHERE B.X in
(SELECT distinct(X) FROM A)

查询 3:

SELECT COUNT(*)
FROM A, B
WHERE A.X=B.X

查询 1 结果 5990。查询 2 和 3 结果 6222。删除distinct或检查顶部的不同计数不会更改结果。有人可以解释为什么所有查询的结果都不相同,因为它们都返回交集计数?

4

1 回答 1

1

假设 A 的值为 A B C

假设 B 的值为 A B C D E C

在这种情况下,A 的计数为 3(QRY1),而 B 的计数为 4,因为当您使用连接时 c 重复(QRY2)C 将匹配 C 的所有值是否具有比 A 更多的重复项。A 可能有重复但数量较少。4 再次 (QRY3)

于 2013-03-21T00:34:03.123 回答