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

sqlserver 数据去重问题

sqlserver 数据去重问题

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

5 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

可以使用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-28
?
开满天机

TA贡献1786条经验 获得超13个赞

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

select distinct name from stu;

select distinct age from stu;



查看完整回答
反对 回复 2019-07-28
?
千万里不及你

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

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

查看完整回答
反对 回复 2019-07-28
?
慕妹3146593

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

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-28
?
暮色呼如

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

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



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

添加回答

举报

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