テーブルから上位 1000 行を削除しようとすると、開発者は予期せぬ問題に遭遇することがよくあります。行動。問題のステートメントで提供されているコードなどのコードは、意図したターゲットではなくテーブル全体を削除することになります。
問題は、サンプル コードが DELETE ステートメントと SELECT ステートメントを組み合わせているという事実にあります。 DELETE ステートメントは上位 1000 行を実行し、テーブル内のすべてを事実上削除します。これを修正するには、TOP 関数に特定の順序基準を定義する必要があります。
上位 1000 行を削除するより効率的な方法は、Common Table Expression (CTE) または同様のテーブル式を利用することです。これにより、提供された回答コードに見られるように、CTE 内で順序付け基準を指定できるようになります。
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
この手法を使用すると、上位 1000 行のみが列 'a1' で順序付けされるようになります。この場合は削除の対象となります。このアプローチにより、テーブル全体を誤って削除するリスクがなく、望ましい結果が保証されます。
以上がSQL Server テーブルからすべてを削除せずに上位 N 行を安全に削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。