oracle读取评论列表,先按点赞次数取前三名,然后按创建时间倒序排序,需要分页

来源:互联网 发布:国外mac破解软件网站 编辑:程序博客网 时间:2024/05/17 03:04

oracle读取评论列表,先按点赞次数取前三名,然后按创建时间倒序排序,需要分页:

第一种方式:

select *

  from (SELECT b.*, DECODE(rownum, 1, 1, 2, 2, 3, 3, 4) rank
          FROM (SELECT a.*
                  FROM ACT_COMMENT_INFO a
                 order by a.prize_num desc, ref desc) b) c

 order by c.rank, c.ref desc;


第二种方式:

SELECT aa.*
  FROM (
        
        SELECT *
          FROM (SELECT a.*, 1 o
                   FROM ACT_COMMENT_INFO a
                  WHERE a.target_act_id = 24
                  ORDER BY a.prize_num DESC, ref desc)
         WHERE rownum <= 3
        UNION
        SELECT *
          FROM (SELECT b.*, 2 o
                  FROM ACT_COMMENT_INFO b
                 WHERE b.target_act_id = 24
                 ORDER BY b.ref DESC)) aa
 ORDER BY aa.o, aa.ref desc;


第二种方式可能出现重复数据。

0 0
原创粉丝点击