Microsoft SQL Server 2000 での MySQL の LIMIT のレプリケーション
MySQL の LIMIT
句を使用すると、特定の行サブセットの取得が簡素化されます。 SQL Server 2000 にはこの機能が直接欠けているため、回避策が必要です。 この記事では、同様の結果を達成するためのいくつかの方法を検討します。
1 つのメソッドは、ネストされた SELECT
ステートメントを使用します。 LIMIT 10, 20
(オフセット 10、フェッチ 20) を模倣するには、以下を使用できます:
<code class="language-sql">SELECT TOP 20 * FROM ( SELECT TOP 30 * FROM mytable ORDER BY somecolumn ) z2 ORDER BY somecolumn DESC;</code>
これにより、上位 30 行が選択され、そのサブセットから上位 20 行が選択されます。
また、一意の列 (「キー」など) が存在する場合は、以下を使用できます:
<code class="language-sql">SELECT TOP 20 * FROM tablename WHERE key NOT IN ( SELECT TOP 10 key FROM tablename ORDER BY key );</code>
これにより、一意のキーに基づいて最初の 10 行が除外され、実質的に次の 20 行が返されます。
制限事項: ネストされたクエリのアプローチは、合計行数がページ サイズの倍数でない場合、最後の「ページ」で問題が発生する可能性があります。ユニークカラム方式では、適切なユニークカラムが必要です。 SQL Server 2000 で LIMIT
をレプリケートするための純粋な SQL ベースの汎用的に適用可能なソリューションは実現不可能です。 ただし、これらのテクニックは実用的な代替手段を提供します。
以上がMicrosoft SQL Server 2000 で MySQL の LIMIT 句をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。