在SQL Server中使用EXCEPT和DISTINCT

时间:2017-05-12 16:56:46

标签: sql sql-server

我正在试图弄清楚此表中的任何用户是否有多个电子邮件地址。

当我运行以下两个查询时,非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

如何让用户拥有多个电子邮件地址?

1 个答案:

答案 0 :(得分:3)

只需使用聚合。如果你想要清单:

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;