我想弄清楚该表中是否有任何用户有多个电子邮件地址。
当我运行以下两个查询时,非 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
如何获取具有多个电子邮件地址的用户?
最佳答案
只需使用聚合。如果你想要列表:
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;
关于sql - 在 SQL Server 中使用 EXCEPT 和 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942911/