ホームページ >データベース >mysql チュートリアル >SQL Server 2008 で特定の数の上位行を効率的に削除するにはどうすればよいですか?
SQL Server 2008 での上位行の効率的な削除
先頭から特定の数の行を削除する必要がある状況を想像してください。 SQL Server のテーブル。 DELETE ステートメントを TOP 句と組み合わせて使用するのが直感的なアプローチですが、すべての行が誤って削除されるという問題が発生する可能性があります。この課題を解決するには、次のガイダンスを検討してください。
実行しようとしたコードにより、テーブルからすべての行が削除されることがわかりました。これは、コードが 2 つの異なるステートメント (DELETE ステートメントと TOP 句を含む SELECT ステートメント) で構成されているためです。 TOP 句は、ORDER BY 句を指定しないと、削除する行を効果的に識別できません。
確実に行を選択的に削除するには、TOP 句内で順序付け基準を確立する必要があります。さらに、共通テーブル式 (CTE) または同様のテーブル式の作成は、定義された数の上位行を削除するための非常に効率的な方法です。
次のコード スニペットは、より信頼性の高いアプローチの例です。
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
このコードでは、CTE は、特定の順序付け基準に基づいて指定された行数を選択することによって、元のテーブルから派生した別のテーブルを確立します (この例ではこの場合、a1列)。その後、DELETE ステートメントによってこの一時テーブルから行が削除され、最上位の行のみが確実に削除されます。
以上がSQL Server 2008 で特定の数の上位行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。