0
我不得不說表A,B和一個共同的列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分的結果6222卸下distinct
或檢查不同的數字在頂部不會改變結果。有人可以解釋爲什麼結果對於所有查詢都不一樣,因爲它們都返回相交數?
它們在邏輯上並不相同:您的結果意味着AX中存在更多非獨特值:http://www.sqlfiddle.com/#!3/67623/7 – 2013-03-21 00:31:18
將不同於計數(Distinct *)可能工作,如果他們事實上所有的領域重複。 count(distinct X)會導致表中的計數相同,因爲您將消除重複項。 – xQbert 2013-03-21 00:36:04
截然不同(*)不起作用,因爲整行不一樣。它是獨特的(X)是有效的。 – 2013-03-29 12:40:49