SQL noob,请告诉我,如果我没有正确的措辞。我正在尝试查找3列中存在多个相同数据实例的所有条目。以下是3列中的一些示例数据。
formatid type_from call_desc_code
20 002694W0:USAGE V9
20 013030W0:USAGE OM
20 013030W0:USAGE NULL
根据我的理解,校验和可用于此,但以下查询的输出似乎不正确。我在#temp表中放入的查询的第一部分有29824个结果,它告诉我3列中应该只有29824个唯一组合,但是当我运行完整查询时,尝试在Excel中删除重复项只有那3列才能完整性检查结果我有更多的东西,然后剩下29824个条目。
formatid是一种smallint数据类型,因此当我尝试使用+连接单元格时,它会返回转换失败错误。我正在运行SQL Server 2012,但我不认为数据库是相同的,因为它无法识别concat函数。
select checksum(formatid,type_from,call_desc_code) & checksum(reverse(formatid),reverse(type_from),reverse(call_desc_code)) as [checksum], count(*) as [Blah]
into #temp
from Table
group by checksum(formatid,type_from,call_desc_code) & checksum(reverse(formatid),reverse(type_from),reverse(call_desc_code))
having count(*) > 1
select * from
Table
where checksum(formatid,type_from,call_desc_code) & checksum(reverse(formatid),reverse(type_from),reverse(call_desc_code)) in (select [checksum] from #temp)
drop table #temp
答案 0 :(得分:1)
这将从源表中获取具有重复项的所有内容
select *
from table t
inner join
(select formatid,type_from,call_desc_code
from Table
group by formatid,type_from,call_desc_code
having count(*) > 1) dup
on dup.formatid = t.formatid
and dup.type_from = t.type_from
and dup.call_desc_code = t.call_desc_code