2012-02-05 14 views
21

私はいくつかのページングを作成しています。いくつかのクエリを作成し、定義されたスライス結果フォームを取得する必要があります。 は、例えば:私はテーブルからTOP N行を選択してください

SELECT * FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC; 

X < < 40N等の範囲20N内のすべての「トップ」の行を取得する必要があり、今私は私がIDと呼ばれる列でスライドさせる必要があります。

どのようにすればいいですか? mysql、mssql、oracleでクエリを実行する必要があります。 MySQLでは

+2

'LIMIT'節を参照してください。http://dev.mysql.com/doc/refman/5.1/en/select.html –

+0

なぜdownvoteですか?回答にあなたのコメントを入れてみませんか?非常に多くの質問。 – Matthias

+1

私はすべて3で動作するものは得られないと確信しています。あなたはOracleで 'rownum'を使う必要があります。 – Ben

答えて

36

を、ここにあなたがそれを行うだろうかです:

のSQL ServerやOracle:

SELECT * -- <-- pick any columns here from your table, if you wanna exclude the RowNumber 
FROM (SELECT ROW_NUMBER OVER(ORDER BY ID DESC) RowNumber, * 
     FROM Reflow 
     WHERE ReflowProcessID = somenumber) t 
WHERE RowNumber >= 20 AND RowNumber <= 40  

のMySQL:

SELECT * 
FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC 
LIMIT 20 OFFSET 20 
15

、あなたは10行使用して行20から始まる取得することができます:あなたのページサイズは20レコードです、そしてあなたは、ページ番号2を取得したいと仮定すると、

SELECT * FROM Reflow 
WHERE ReflowProcessID = somenumber 
ORDER BY ID DESC 
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10 
関連する問題