0

クエリを探して、親IDがマスターレコードと一致しない子テーブルのすべてのレコードを削除します。

マスターテーブル

 1. David
 2. Fin
 3. Lisa

子テーブル

 1. 100
 1. 200
 2. 200
 2. 222
 8. 100
 9. 100

子テーブルに必要な出力

 1. 100
 1. 200
 2. 200
 2. 222

子テーブルからレコード#8と9を削除したいのですが、親IDがありません。

ありがとう

4

1 に答える 1

1

DELETE操作で外部結合を使用できます。

DELETE a 
FROM child a
LEFT JOIN master b ON a.parent_id = b.id
WHERE b.id IS NULL

これを行う必要を防ぐために、調べる必要があるのは、親(マスターテーブルの行)を削除するたびに実行される参照CASCADEアクションです。

ON DELETE CASCADE子テーブルの外部キーを設定している場合、削除された親は、対応するすべての「子」も削除されます

于 2012-07-18T03:35:18.557 に答える