当前位置: 代码迷 >> Sql Server >> SQL 查询不重复记录,该如何处理
  详细解决方案

SQL 查询不重复记录,该如何处理

热度:86   发布时间:2016-04-24 21:08:50.0
SQL 查询不重复记录

select * from [Nop_ProductVariantAttributeValue] 
  where [Name] in (select [Name] from [Nop_ProductVariantAttributeValue] group by [Name] having(count(*))=1)

如果Name重复的话 只显示一个 如果不重复的值就全部显示
但是这样写 对比后发现 有几个重复值显示不出来

------解决方案--------------------

--用主键去过滤
select * from [Nop_ProductVariantAttributeValue] a
where not exists
(select 1 from [Nop_ProductVariantAttributeValue] 
where a.name=name and 主键<a.主键)--如果多主键 就主键1+主键2<a.主键1+a.主键2

------解决方案--------------------
select a.* 
from [Nop_ProductVariantAttributeValue] a
inner join 
(select name,min(id) id from [Nop_ProductVariantAttributeValue] group by name) b 
on a.id=b.id

------解决方案--------------------
引用:

--用主键去过滤
select * from [Nop_ProductVariantAttributeValue] a
where not exists
(select 1 from [Nop_ProductVariantAttributeValue] 
where a.name=name and 主键<a.主键)--如果多主键 就主键1+主键2<a.主键1+a.主键2
正解