Sql

SQLServerの制限10..20



Limit 10 20 Sql Server



解決:

SQL Server 2012+の場合はを使用できます。

SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWSONLY 

NSLIMIT句は標準SQLの一部ではありません。これは、MySQL、PostgreSQL、およびSQLiteによるSQLのベンダー拡張としてサポートされています。



他のブランドのデータベースにも同様の機能がある場合があります(例:Microsoft SQL ServerのTOP)ですが、これらは常に同じように機能するとは限りません。

使いにくいMicrosoft SQLServerのTOPでLIMIT句。うまくいかない場合があります。



あなたが示した解決策は、ROW_NUMBER()は、Microsoft SQL Server2005以降で使用できます。これは、クエリの一部としてのみ機能する(今のところ)最良のソリューションです。

別の解決策は使用することです最初にフェッチするTOP カウント + オフセット 行、次にAPIを使用して最初の行を超えてシークします オフセット 行。

参照:



  • 「MicrosoftSQLServer2000でMySQLLIMIT句をエミュレートする」
  • 「ASP.NETでの大規模な結果セットのページング」

お気づきのとおり、これは推奨されるSQLサーバーの方法です。

SELECT * FROM(SELECT *、ROW_NUMBER()OVER(ORDER BY name)as row FROM sys.databases)a WHERE a.row> 5 and a.row<= 10