0

A と B というテーブルと、nullable ではない共通の列 X が必要です。

クエリ 1:

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 の結果は 6222distinctです。上部の個別カウントを削除またはチェックしても、結果は変わりません。すべてのクエリが交差数を返すため、結果がすべてのクエリで同じではない理由を誰かが説明できますか?

4

1 に答える 1

1

A に A B C の値があると仮定します。

B に値 A B C D E C があると仮定します。

この場合、A のカウントは 3 (QRY1) になりますが、結合 C を使用すると c が繰り返されるため (QRY2)、B のカウントは 4 になり、C のすべての値が A よりも多く重複します。重複しますが、それらの数は少なくなります。4 再び (QRY3)

于 2013-03-21T00:34:03.123 に答える