ホームページ > データベース > mysql チュートリアル > SQL Server テーブルからすべてを削除せずに上位 N 行を安全に削除する方法

SQL Server テーブルからすべてを削除せずに上位 N 行を安全に削除する方法

Barbara Streisand
リリース: 2024-12-17 01:32:25
オリジナル
599 人が閲覧しました

How to Safely Delete the Top N Rows from a SQL Server Table Without Deleting Everything?

SQL Server 2008 のテーブルからの上位 1000 行の削除: よくある落とし穴

テーブルから上位 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート