首页 / 数据库 / MySQL / 使用Oracle分析函数随机抽取N条记录
模拟一个歌曲表,有歌曲ID和作者ID,并且初始化一些数据create table music(
music_id int primary key, userid int);insert into music(music_id)select rownum rn from dual connect by level<1000;update music set userid= mod(music_id,5);commit;
要求:
每个作者随机抽取他的3个作品。
SQL如下
select * from
( select music_id,userid,ROW_NUMBER() OVER (PARTITION BY userid ORDER BY dbms_random.random()) rn from music)where rn<=3;
第一次执行:第二次执行:这个方法只针对Oracle有效(使用了它的分析函数)Oracle函数之GREATEST函数详解实例 http://www.linuxidc.com/Linux/2014-07/103980.htmOracle函数之单行转换函数 http://www.linuxidc.com/Linux/2014-07/103979.htm生成动态前缀且自增号码的Oracle函数 http://www.linuxidc.com/Linux/2014-03/98505.htmOracle函数之Replace() http://www.linuxidc.com/Linux/2013-01/77406.htmOracle函数大全 http://www.linuxidc.com/Linux/2012-12/75875.htmOracle函数之case和decode的用法区别及性能比较 http://www.linuxidc.com/Linux/2012-08/67104.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址