5

300行前後を返すオラクルで選択を行いたいのですが、最後の12個のレジストリが必要です。クエリは次のとおりです。

(SELECT * 
FROM series 
ORDER BY odata DESC) estatisticas 
WHERE ponteiro = 50 AND lotus = 30
4

2 に答える 2

9

次のようなもの:

select * from 
    ( select estatisticas, rownum rn
        (SELECT *
        FROM series 
        ORDER BY odata DESC) estatisticas 
        WHERE ponteiro = 50 AND lotus = 30
    order by odata asc) where rownum <=12

編集:クエリ用に更新しました。内側のクエリとは逆に、ケースの昇順で並べ替えて、最後の12個を取得できるようにします。

于 2012-08-07T15:13:30.790 に答える
1

Oracle RDBMS は、クエリの結果セットを作成するときに、rownumと呼ばれる疑似列を使用します。結果の各行には、0 から始まる昇順で番号が付けられます。条件は次のように評価できます。

select job_name from dba_scheduler_jobs where rownum < 10;

これにより、最初に見つかった 10 行が返されます。

rownum は、レコードがデータベースからフェッチされた後、クエリの order by 句の前に評価されることに注意してください。

そのため、クエリは次のようになります。

SELECT * FROM 
((SELECT * FROM series 
    ORDER BY odata DESC) estatisticas 
    WHERE ponteiro = 50 AND lotus = 30 [ASC/DESC]) 
WHERE rownum < 12;

取得する行に応じて、order by 句を昇順または降順に設定する必要があります。

于 2012-08-08T04:48:13.533 に答える