2012-03-19 17 views
1

可能重複的Oracle查詢:
How do I limit the number of rows returned by an oracle query?增加限制和偏移到使用partion在

我在Oracle中查詢其得到所有從數據庫中討論了一些元數據和討論最後的海報。我想爲查詢添加限制和偏移,我如何改變它以支持它。

SELECT * FROM 
       (SELECT discussions.created_at, discussions.id, discussions.title, discussions.stub, 
       users.username AS created_by, 
       count(distinct threads.id) over (partition by discussions.created_at, 
                discussions.title, 
                users.username) AS replies, 
       count(distinct discussion_views.discussion_id) 
        over (partition by discussions.created_at, 
          discussions.title, 
          users.username) AS views, 
       latest_poster.username AS latest_post_by, 
       threads.updated_at AS latest_post_at, 
       row_number() over (partition by discussions.created_at, 
            discussions.title, 
            users.username 
         order by threads.id desc) AS rn 
      FROM discussions 
      LEFT JOIN threads on discussions.id=threads.discussion_id 
      LEFT JOIN discussion_views on discussions.id=discussion_views.discussion_id 
      JOIN users on users.id=discussions.user_id 
      JOIN users latest_poster ON (latest_poster.id=threads.user_id) 
      WHERE discussions.course_id={$course_id} 
      ) sq 
      WHERE rn=1 
      ORDER BY created_at desc" 

回答

1
SELECT 
    * 
FROM 
(
    SELECT 
    rownum AS row_id, 
    <your other selects> 
    FROM 
    <your query> 
    ORDER BY 
    <whatever> 
) 
    data 
WHERE 
     data.row_id >= 123 
    AND data.row_id <= 222