为了账号安全,请及时绑定邮箱和手机立即绑定

sqlserver 数据去重问题

sqlserver 数据去重问题

阿晨1998 2019-07-17 12:56:04
select distinct address,name,age from stu;select distinct address from stu;两sql输出结果集数量不一样我想要以地址去重的数量,但还要三个字段的信息 sql应该怎样写结果集只要地址不重复,其他列任意选取一条数据即可
查看完整描述

5 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

可以使用row_number()函数,该函数可以将相同的数据做归类,并附加一列,作为序数列,sql如下:
select *,ROW_NUMBER() over (partition by address order by age desc) as rw
from stu;
只要在该查询结果集外再嵌套一个取出rw=1的sql语句即可,如下:
select * from (
select *,ROW_NUMBER() over (partition by address order by age desc) as rw
from stu ) as t1
where rw = 1;

查看完整回答
反对 回复 2019-07-17
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

三个字段不重复值的数量可能不一样,所以不能将它们放在同一个表里。
你可以分别用三个语句获取它们不重复的值列表。
select distinct address from stu;

select distinct name from stu;

select distinct age from stu;

查看完整回答
反对 回复 2019-07-17
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

select address,max(name),,max(age) from stu group by address;

查看完整回答
反对 回复 2019-07-17
?
潇湘沐

TA贡献1816条经验 获得超6个赞

elect address,name,age from stu a
where name+age=(select top 1 name+age from stu where a.address=address group by name,age)

查看完整回答
反对 回复 2019-07-17
?
慕后森

TA贡献1802条经验 获得超5个赞

select address,name,age from stu where (address,age) in(select address,max(age) from stu group by address)

查看完整回答
反对 回复 2019-07-17
  • 5 回答
  • 0 关注
  • 1531 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信