[解決済み] SQLサーバーでINNER JOINを使用して複数のテーブルから削除する方法
2022-07-20 17:53:49
質問
MySQL では、次の構文が使用できます。
DELETE t1,t2
FROM table1 AS t1
INNER JOIN table2 t2 ...
INNER JOIN table3 t3 ...
SQL Serverで同じことをするにはどうすればよいですか?
どのように解決するのですか?
この例では、"deleted" の擬似テーブルを利用することができます。次のようなものです。
begin transaction;
declare @deletedIds table ( id int );
delete from t1
output deleted.id into @deletedIds
from table1 as t1
inner join table2 as t2
on t2.id = t1.id
inner join table3 as t3
on t3.id = t2.id;
delete from t2
from table2 as t2
inner join @deletedIds as d
on d.id = t2.id;
delete from t3
from table3 as t3 ...
commit transaction;
もちろん、3番目のテーブルのために結合するものが必要であれば、2番目の削除でも'output deleted.'を実行することができます。
余談ですが、insert 文では inserted.* を、update 文では inserted.* と deleted.* の両方を実行することも可能です。
EDITです。 また、table1に対してtable2 + 3から削除するトリガーを追加することを検討したことがありますか?あなたは暗黙のトランザクションの中にいることになり、また、"insertedを持つことになります。 および"deleted. "擬似テーブルが使用できます。
関連
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
MHAの高可用性構成とフェイルオーバー
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み] 外部キー制約は、サイクルまたは複数のカスケードパスの原因となる可能性がありますか?