sql - 在 SQL Server 中使用 EXCEPT 和 DISTINCT

标签 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

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

最佳答案

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

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/

相关文章:

sql - 解析sql中的JSON字符串

sql - postgresql 错误 : syntax error at or near "PRIMARY"

sql - '+' 附近的语法不正确 - SQL/TSQL

c# - 无法使用企业库从 SQL 数据库获取字节数组

mysql - 如何创建MySQL分层递归查询

c++ - 微软 SQL 服务器 : Access a local temporary table in a prepared statement

sql - 在选择查询中插入 if

java - 装箱实体字段后强制 JPA 删除 NOT NULL 标志

sql-server - SQL Server Management Studio – 改进 TSQL 编码过程的技巧

sql-server - 将本地数据库更改发布到远程数据库 SQL Server 2012