首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2013-07-16 
SQL 查询不重复记录select * from [Nop_ProductVariantAttributeValue]where [Name] in (select [Name] fr

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
正解

热点排行