首页 新闻 会员 周边 捐助

这样的sql该怎么写啊?纯sql能做到么?

0
悬赏园豆:50 [已解决问题] 解决于 2016-10-03 17:13
现有表T,数据如下:
UserId   Value
1           a
1           b
1           c
2           a
2           b
2           c
3           b
3           c

现在需要选出以下这样的数据集:
1  a
2  a
3  b
请问各位,这样的语句该怎么写啊?纯sql可以做到么?其实也就是每个UserId各自的第一条。 
我叫So的主页 我叫So | 初学一级 | 园豆:186
提问于:2016-09-30 16:04
< >
分享
最佳答案
0

http://www.cnblogs.com/isun/archive/2012/12/22/2829528.html

你要的,都在这里了

收获园豆:50
czd890 | 专家六级 |园豆:14488 | 2016-09-30 16:07

wo我去看看,非常感谢

我叫So | 园豆:186 (初学一级) | 2016-09-30 16:31

你给的连接中下面的写法,完美解决了我的问题。非常感谢!

select * from
(
select *, ROW_NUMBER() over(partition by SectionId order by TransactionDate desc) as rowNum
from SectionTransactionLog
) ranked
where ranked.rowNum <= 2
order by ranked.SectionId, ranked.TransactionDate desc

我叫So | 园豆:186 (初学一级) | 2016-09-30 17:16

@我叫So: 结帖,给分(^_^)

czd890 | 园豆:14488 (专家六级) | 2016-10-01 19:21
其他回答(7)
0

select UserId,min(Value) from T group by UserId

jello chen | 园豆:7336 (大侠五级) | 2016-09-30 16:10

z这样写满足不了我的需求,而且表内还有其他列要返回,我只是为了简单只列了两个列

支持(0) 反对(0) 我叫So | 园豆:186 (初学一级) | 2016-09-30 16:30
0

每个只要第一条?

顾晓北 | 园豆:10898 (专家六级) | 2016-09-30 16:28

e嗯,也就是每个UserId的第1/N条,也包括其他很多字段,我只是为了简单只列了两个列

支持(0) 反对(0) 我叫So | 园豆:186 (初学一级) | 2016-09-30 16:31
0

百度:sql 分组取第一

吴瑞祥 | 园豆:29449 (高人七级) | 2016-09-30 16:46

y已解决了,非常感谢。

支持(0) 反对(0) 我叫So | 园豆:186 (初学一级) | 2016-09-30 17:16
0

  可以,使用row_number over()

 

悦光阴 | 园豆:2251 (老鸟四级) | 2016-09-30 18:06
0

select * from
(
select *, ROW_NUMBER() over(partition by SectionId order by TransactionDate desc) as rowNum
from SectionTransactionLog
) ranked
where ranked.rowNum <= 2
order by ranked.SectionId, ranked.TransactionDate desc

testewr | 园豆:3 (初学一级) | 2016-10-03 14:49
0

虽然结贴,但我看着答案还是很复杂,比较简单的方法是:

select max(userid),min(value) from T group by userid;

舒山 | 园豆:220 (菜鸟二级) | 2016-10-05 20:11
0

select userid,min(value_) from tt group by userid order by userid;

login的秘密花园 | 园豆:209 (菜鸟二级) | 2016-11-21 15:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册