我正在试图弄清楚此表中的任何用户是否有多个电子邮件地址。
当我运行以下两个查询时,非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
如何让用户拥有多个电子邮件地址?
答案 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;