在SQL Server中使用EXCEPT和DISTINCT

4
我正在尝试查找此表中是否有任何用户具有多个电子邮件地址。
当我运行以下两个查询时,非DISTINCT查询的结果比使用DISTINCT的查询结果多。
SELECT UserName, EmailAddress 
FROM Users;

SELECT DISTINCT UserName, EmailAddress 
FROM Users;

然而,该查询未返回任何结果(可能是因为剩余的行与两个表中已有的某一行完全相同)。

SELECT UserName, Payment 
FROM Users

EXCEPT

SELECT DISTINCT UserName, Payment 
FROM Users

如何获取拥有多个电子邮件地址的用户?


什么SQL系统? - f.khantsis
1个回答

4

只需使用聚合。如果需要列表:

SELECT UserName, EmailAddress
FROM Users
GROUP BY UserName, EmailAddress
HAVING COUNT(*) > 1;

如果你只想要重复项的计数,你可以计算它们的差异。不幸的是,SQL Server不允许在COUNT(DISTINCT)中使用多个列,但你可以将它们连接起来。假设两个值都不会是NULL

SELECT COUNT(*) - COUNT(DISTINCT UserName + ' ' + EmailAddress) as numDuplicates
FROM Users;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接