如果将 Distinct 和 Group by 与聚合一起使用,重复检查之间的区别

Difference between duplicate check if using Distinct and Group by with aggregate

好的,我已经有一段时间没有大量使用 SQL 服务器来编写查询了。

一定有一些我遗漏的问题。

根据我的理解,以下两个查询应该return相同数量的重复记录

SELECT COUNT(INVNO)
     , INVNO
FROM INVOICE
GROUP BY INVNO
HAVING COUNT(INVNO) > 1
ORDER BY INVNO

SELECT DISTINCT invno
FROM INVOICE
ORDER BY INVNO

INVNO[​​=11=]中没有空值

我哪里可能出错?

这些查询不会return 相同的结果。第一个只会给你重复的 INVNO 值,第二个会给出所有唯一的 INVNO 值,即使它们在整个 table 中只出现一次。

group by query 将过滤我们所有的单张发票,而 distinct 将简单地从每张发票中挑选一张。第一个查询是第二个的子集

除了 Adam 所说的,GROUP BY 将对 GROUPed 列上的数据进行排序。