sql - 如何选择列值不不同的每一行

标签 sql sql-server sql-server-2008

我需要运行一个 select 语句,该语句返回列值不重复的所有行(例如 EmailAddress)。

例如,如果表格如下所示:

CustomerName     EmailAddress
Aaron            aaron@gmail.com
Christy          aaron@gmail.com
Jason            jason@gmail.com
Eric             eric@gmail.com
John             aaron@gmail.com

我需要返回查询:

Aaron            aaron@gmail.com
Christy          aaron@gmail.com
John             aaron@gmail.com

我读了很多帖子并尝试了不同的查询但无济于事。我认为应该有效的查询如下。有人可以提出替代方案或告诉我我的查询可能有什么问题吗?

select EmailAddress, CustomerName from Customers
group by EmailAddress, CustomerName
having COUNT(distinct(EmailAddress)) > 1

最佳答案

这比 EXISTS 方式快得多:

SELECT [EmailAddress], [CustomerName] FROM [Customers] WHERE [EmailAddress] IN
  (SELECT [EmailAddress] FROM [Customers] GROUP BY [EmailAddress] HAVING COUNT(*) > 1)

关于sql - 如何选择列值不不同的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146304/

相关文章:

SQL Join 返回重复的查询结果

sql - 根据日期比较多个SQL表数据

sql - postgres - 在(列表)中 - 列不存在

sql - 如何在 SQL 中将顺序的、带时间戳的行组合在一起并返回每个组的日期范围

sql-server - SQL Server 复制数据库问题

.net - 在 .NET 中以编程方式检索数据库表创建脚本

sql-server - 必须声明标量变量 "@@procid"

sql-server - SQL UPDATE 具有复合匹配值的自连接

c# - 使用smo在SqlServer中创建用户的问题

c# - 初始化字符串的格式不符合从索引 0 开始的规范