查找没有"重复的记录"

时间:2014-03-17 15:24:50

标签: 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数据外,所有其他记录看起来都相似。

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

所以,我想查询一个查找记录,找到没有重复记录的记录(基于Column1和Column2),并且有" Z"在Column3。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

您可以使用聚合和having子句执行此操作:

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

答案 1 :(得分:0)

语法不同,结果相同。

SELECT A.column1, A.column2
FROM MyTable A
LEFT JOIN MyTable B ON A.column1= B.column1AND A.column2= B.column2
WHERE A.column3 = 'z'
GROUP BY A.column1, A.column2
HAVING COUNT(*) = 1