sqlserver 数据去重问题

selectdistinctaddress,name,agefromstu;selectdistinctaddressfromstu;两sql输出结果集数量不一样我想要以... select distinct address,name,age from stu;
select distinct address from stu;
两sql输出结果集数量不一样
我想要以地址去重的数量,但还要三个字段的信息
sql应该怎样写
结果集只要地址不重复,其他列任意选取一条数据即可
展开
 我来答
19285732
推荐于2016-12-01 · 超过22用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:52.5万
展开全部
可以使用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;
摆渡浮桥
2012-11-13 · TA获得超过3629个赞
知道大有可为答主
回答量:1610
采纳率:100%
帮助的人:2219万
展开全部
三个字段不重复值的数量可能不一样,所以不能将它们放在同一个表里。
你可以分别用三个语句获取它们不重复的值列表。
select distinct address from stu;

select distinct name from stu;

select distinct age from stu;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanfcsohucom
2012-11-16
知道答主
回答量:10
采纳率:0%
帮助的人:1.5万
展开全部
select address,name,age from stu a
where name+age=(select top 1 name+age from stu where a.address=address group by name,age)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TUBER727
2012-11-13 · TA获得超过428个赞
知道小有建树答主
回答量:351
采纳率:100%
帮助的人:113万
展开全部
select address,name,age from stu where (address,age) in(select address,max(age) from stu group by address)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友491f1c2
2012-11-14 · TA获得超过2297个赞
知道大有可为答主
回答量:2504
采纳率:62%
帮助的人:2253万
展开全部
附加一列序号,再根据address取最大序号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式