web-dev-qa-db-ja.com

テーブルから上位N行を選択します

私はいくつかのページングを行っており、いくつかのクエリを作成し、スライスを定義した結果フォームを取得する必要があります。たとえば、20n <x <40nなどの範囲のすべての「トップ」行を取得する必要があります。

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

そして今、私はIDと呼ばれる列でスライドさせる必要があります。

どのように提案しますか? mysql、mssql、およびOracleでクエリを実行する必要があります。

31
Night Walker

ページサイズが20レコードで、ページ番号2を取得したいと仮定すると、次のようになります。

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
50
Bassam Mehanni

MySqlでは、次を使用して行20から10行を取得できます。

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
23
Eric
select * from table_name LIMIT 100

これはMYSQLでのみ機能することを忘れないでください

0
Pravin