Dbms

COUNT 會丟棄重複項嗎?

  • August 2, 2020

我的教授教我這個 SQL 語句:

SELECT COUNT(length) FROM product

將返回2以下數據集:

product
|id | length | code |
|-------------------|
| 1 |    11  | X00  |
| 2 |    11  | C02  |
| 3 |    40  | A31  |

COUNT她通過說不計算重複來證明這一點。我不同意。在嘗試了很多 DBMS 之後,我從來沒有找到一個有這種行為的。這樣的 DBMS 存在嗎?

COUNT確實計算了我知道的所有 DBMS 中的重複項,但是。

教授有什麼理由教這種行為

是的,這是有原因的。在最初的關係理論(所有現代關係 DBMS 的基礎)中,關係是這個詞的數學意義上的集合。這意味著任何關係都不能包含重複項,包括所有過渡關係,而不僅僅是您的“表”。

遵循這個原則,您可能會說SELECT length FROM product已經只包含兩行,因此相應的COUNT返回2,而不是3


例如,在Rel DBMS 中,使用問題和Tutorial D語法中給出的關係:

SUMMARIZE product {length} BY {}: {c := COUNT()}

給出:

相對結果

引用自:https://dba.stackexchange.com/questions/182420