• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

去除重复行的SQL

zedan 2008-03-19 10:23:35
表 table1
id column1
------
1. a
2. b
3. c
4. d
5. a
6. b

要得到没有重复数据的行的总数,如何写SQL?

即如上, 1-5, 2-6 行重复了, 所以结果为 2
...全文
2641 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
oolinyu 2011-08-16
学习了
回复
肥胖的柠檬 2008-03-19
不用这烦,

declare @tb table (id int,col varchar(1))
insert into @tb select 1,'a'
insert into @tb select 2,'b'
insert into @tb select 3,'c'
insert into @tb select 4,'d'
insert into @tb select 5,'a'
insert into @tb select 6,'b'


select min(id),col from @tb group by col


这样就可以了,
回复
fuda_1985 2008-03-19
同意二楼的。
回复
haonanernet 2008-03-19
declare @t table(id int ,column1 varchar(10) )
insert into @t
select
1, 'a' union all select
2, 'b' union all select
3, 'c' union all select
4, 'd' union all select
5, 'a' union all select
6, 'b'





select count(*) from @t t where column1 not in
(select column1 from @t group by column1 having count(*) >1)
回复
xiaoliaoyun 2008-03-19

declare @tb table (id int,col varchar(1))
insert into @tb select 1,'a'
insert into @tb select 2,'b'
insert into @tb select 3,'c'
insert into @tb select 4,'d'
insert into @tb select 5,'a'
insert into @tb select 6,'b'


select count(1) from @tb a where not exists (select 1 from @tb b where a.id<>b.id and a.col = b.col)

回复
zedan 2008-03-19
[Quote=引用 2 楼 wzy_love_sly 的回复:]
SQL codedeclare@tbtable(idint,colvarchar(1))insertinto@tbselect1,'a'insertinto@tbselect2,'b'insertinto@tbselect3,'c'insertinto@tbselect4,'d'insertinto@tbselect5,'a'insertinto@tbselect6,'b'selectsum(con)as'次数'from(selectcon=(selectcount(1)from@tbwherecol=t.colandid>t.id)from@tbt)t

次数
2
[/Quote]


次数 2 是有相同行的数量, 不是要求的: 不同行的数量
回复
JiangHongTao 2008-03-19
发错了
回复
dawugui 2008-03-19
[Quote=引用楼主 zedan 的帖子:]
表 table1
id column1
------
1. a
2. b
3. c
4. d
5. a
6. b

要得到没有重复数据的行的总数,如何写SQL?

即如上, 1-5, 2-6 行重复了, 所以结果为 2
[/Quote]

SELECT COUNT(*) FROM (SELECT ID , COLUMN1 FROM TABLE1 GROUP BY ID , COLUMN1 HAVINGCOUNT(*) = 1) T
回复
zedan 2008-03-19
[Quote=引用 1 楼 dawugui 的回复:]
SELECT COUNT(DISTINCT *) FROM TABLE1
[/Quote]

我可能没说清楚, 不是要唯一数据的行数,而是要没有重复数据的行数, 比如有二行的数据是重复的,则这两行都不计,而不是将这两行计一行
回复
dawugui 2008-03-19
[Quote=引用楼主 zedan 的帖子:]
表 table1
id column1
------
1. a
2. b
3. c
4. d
5. a
6. b

要得到没有重复数据的行的总数,如何写SQL?

即如上, 1-5, 2-6 行重复了, 所以结果为 2
[/Quote]

SELECT COUNT(*) FROM TABLE1 GROUP BY ID , COLUMN1 HAVINGCOUNT(*) = 1
回复
dawugui 2008-03-19
SELECT COUNT(*) FROM (SELECT DISTINCT * FROM TABLE1) T
回复
wzy_love_sly 2008-03-19
declare @tb table (id int,col varchar(1))
insert into @tb select 1,'a'
insert into @tb select 2,'b'
insert into @tb select 3,'c'
insert into @tb select 4,'d'
insert into @tb select 5,'a'
insert into @tb select 6,'b'
select sum(con) as '次数' from (
select con=(select count(1) from @tb where col=t.col and id>t.id) from @tb t)t


次数
2
回复
dawugui 2008-03-19
SELECT COUNT(DISTINCT *) FROM TABLE1
回复
kook_tian 2008-03-19
select sum(ss.aa) from (select count(*)-1 aa from DictThink group by plistid) ss

这么写标准点,可惜来晚了。
回复
kook_tian 2008-03-19
select sum(aa) from (select count(*)-1 aa from table1 group by column1) ss
回复
zedan 2008-03-19
谢谢各位了,尽管有些是没看清要求的.
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-19 10:23
社区公告
暂无公告