日期:2014-05-17  浏览次数:20946 次

sql取定量数据的问题,急急急,在线等结果请高手们指定
我现在有这么一个需求,
数据库中原始记录
用户id       积分
1                 10
1                 20
1                 30
1                 80
2                 10
2                 30
3                 50
3                 60
3                 70
3                 80

但是只显示给用户
用户id       积分
1                 10
1                 20
1                 30
2                 10
2                 30
3                 50
3                 60
3                 70

也就是说原始数据按“用户id”来区分,大与3条的只显示3条(显示哪3条随便),小与3条的就全部显示。


------解决方案--------------------
select 用户id,积分 from (select 用户id,积分,rank() over(partition by 用户id order by rowid) r from table1 ) where r <=3;
------解决方案--------------------
不要用rank()
要用row_number()