孤立したアイテムがかなりあるテーブルをクリーンアップしようとしています。テーブルから孤児を削除する
これは、null値を検索して別のテーブルとの関係があるかどうかを確認することでこれに近づいています。
DELETE FROM table1
LEFT JOIN table2 ON table1.ID = table2.ID
WHERE table2.ID IS NULL
左外部結合が無効であるというエラーが発生します。
私は
孤立したアイテムがかなりあるテーブルをクリーンアップしようとしています。テーブルから孤児を削除する
これは、null値を検索して別のテーブルとの関係があるかどうかを確認することでこれに近づいています。
DELETE FROM table1
LEFT JOIN table2 ON table1.ID = table2.ID
WHERE table2.ID IS NULL
左外部結合が無効であるというエラーが発生します。
私は
これを試してみてください、私はこの壊れた関係からこれらの孤児を削除することができ、他の方法の提案を探していますが:
ここDELETE FROM table1
WHERE NOT EXISTS (SELECT NULL FROM table2 WHERE table1.ID = table2.ID)
あなたは同じ構文を使用したい場合は、どのようにそれは可能性があります
DELETE a
FROM table1 a
LEFT JOIN table2 b
ON a.id = b.id
WHERE b.id IS NULL
なぜこれは@MaziarTaheriAbkenarソリューションよりも速く実行されます。 SQL Serverのクエリプランは、あなたと彼の間で少し異なりますが、あなたの実行は私の世界ではるかに速くなります。 +1 –
@Smitty odd、私はそれが同じだと思ったでしょう –
これはそれを行う方法です。サブクエリはこのジョブの間違ったツールです。 – Teson
表1は、孤立したレコードを含む子テーブルです。表2は親表です。
DELETE ChildTable
FROM Table1 ChildTable
LEFT JOIN Table2 ParentTable
ON ChildTable.id = ParentTable.id
WHERE ParentTable.id IS NULL
本当に役立つ記事です。 SQL JOINs make it easy to find and fix missing data
+1:あなたは最初です –