
sqlserver 2008中的表,id列是不重复的主键,除id列,其他列出现重复数据,怎么去除重复???
idnamesexage1小马男232小张女223小韩男234小马男235小马男236小韩男237小马男23怎么能一个人只剩一行?而且不改变前面的id号...
id name sex age
1 小马 男 23
2 小张 女 22
3 小韩 男 23
4 小马 男 23
5 小马 男 23
6 小韩 男 23
7 小马 男 23
怎么能一个人只剩一行?而且不改变前面的id号 展开
1 小马 男 23
2 小张 女 22
3 小韩 男 23
4 小马 男 23
5 小马 男 23
6 小韩 男 23
7 小马 男 23
怎么能一个人只剩一行?而且不改变前面的id号 展开
2个回答
展开全部
你这题目问的很奇怪。如果你想分组就用group by 如果你想去掉重复项就用distinct 但是你要保留ID,去掉重复项。不理解是什么意思。
1 小马 男 23
4 小马 男 23
7 小马 男 23
对于系统来说这根本就不是同一个数据,除非你忽略ID,这样可以distinct。就像一个班级有3个同名的同学一样。学号不同,就表示是不同的人。除非你忽略学号,这样有3个小马,就可以认为是一条记录重复了3次。
1 小马 男 23
4 小马 男 23
7 小马 男 23
对于系统来说这根本就不是同一个数据,除非你忽略ID,这样可以distinct。就像一个班级有3个同名的同学一样。学号不同,就表示是不同的人。除非你忽略学号,这样有3个小马,就可以认为是一条记录重复了3次。
展开全部
select * from table a where exists
(select 1 from table group by name,sex,age having min(id)=a.id)
(select 1 from table group by name,sex,age having min(id)=a.id)
追问
报错!HAVING 子句中的列 'a.Id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
追答
表别名a是外面的,里面的不用加表别名,或者用其他表别名比如b
或者
select * from table a where id in
((select min(id) as id from table group by name,sex,age)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询