sql - 查找没有 "duplicates"的记录

标签 sql sql-server sql-server-2008

我正在尝试根据特定条件在表中查找没有“重复项”的记录。我将重复项放在引号中,因为这些记录不是字面上的重复项,正如我的示例数据将显示的那样。

MyTable
Column1-----Column2-----Column3
ABC---------123---------A
ABC---------123---------Z
BCD---------234---------Z
CDE---------345---------A
CDE---------345---------Z
DEF---------456---------A
DEF---------456---------Z
EFG---------567---------Z
FGH---------678---------A

单看这个数据,可以清楚的看到,Column1中有BCD、EFG、FGH的记录,没有任何额外的重复;但是,除了 Column3 数据外,所有其他记录看起来都相似。

我可以编写查询来查找这三个记录,但我只关心 Column3 中具有“Z”的记录。这将导致查询仅显示 BCD 和 EFG,而不显示 FGH。

所以,我想要一个查询来查找没有重复项(基于 Column1 和 Column2)并且在 Column3 中有“Z”的记录。

非常感谢任何帮助!

最佳答案

您可以使用聚合和 having 子句来做到这一点:

select column1, column2, max(column3)
from mytable
group by column1, column2
having count(*) = 1 and max(column3) = 'Z';

关于sql - 查找没有 "duplicates"的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458364/

相关文章:

sql-server - SQL Server 2008 R2 是 Oracle 11g RAC 的替代品吗?

mysql - 如何将表分解为查询

sql-server - SQL 查询中 SELECT 语句中的WITH TIES 关键字有什么用?

mysql - 我如何通过更改/更新来计算项目状态

sql-server - 经典 ASP : How can I use a value from SQL twice?

sql-server-2008 - Sql Server 2008 远程访问问题

sql-server - 是否可以编写包含一对多关系的数据库 View ?

sql - 如何从sql server 2008中的日期中仅提取年份?

sql - Oracle 基于时间的分析

php - MySQL多列总计解决方案