SQL Server テーブルからの上位行の削除
SQL Server では、テーブルからの上位行の削除は DELETE ステートメントを通じて実行できます。 。ただし、テーブルのすべての行を誤って削除しないように、ステートメントが適切に構築されていることを確認することが重要です。
提供されたコードに示されているように、次のステートメントを使用して上位 1000 行を削除しようとします:
delete from [mytab] select top 1000 a1,a2,a3 from [mytab]
通常、意図した上位 1000 行ではなく、すべてのテーブル行が削除されます。これは、ステートメントが DELETE と SELECT の 2 つの操作で構成されているためです。
先頭の行のみを正しく削除するには、TOP 句で順序付け基準を指定することが重要です。これがないと、SQL Server は行をランダムに削除し、テーブル全体に影響を与える可能性があります。
効率的な方法の 1 つは、Common Table Expression (CTE) または同様のテーブル式を使用することです。変更された例は次のとおりです。
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
この場合、CTE は、[mytab] テーブルから、指定された列 'a1' の順序で上位 1000 行を返します。次に、DELETE ステートメントは CTE テーブル式をターゲットにし、意図した行のみが削除されるようにします。このアプローチにより、不必要な処理が最小限に抑えられ、追加行の誤った削除が防止されます。
以上がSQL Server テーブルから上位行を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。