mysql テーブルがあるとしましょう
Id RelatedId
1 0
2 0
3 1
4 2
5 1
6 2
単一の MySQL クエリで、RelatedId=0 のすべてのレコードを削除し、次に Id=RelatedId の子を削除するにはどうすればよいですか?
mysql テーブルがあるとしましょう
Id RelatedId
1 0
2 0
3 1
4 2
5 1
6 2
単一の MySQL クエリで、RelatedId=0 のすべてのレコードを削除し、次に Id=RelatedId の子を削除するにはどうすればよいですか?
ClaireG の回答に代わる方法は、ON DELETE CASCADE に設定された外部キーとの関係を強制することです。
2 回確認する必要があります。
DELETE FROM [yourTableName]
WHERE RelatedId = 0
OR (RelatedId in
(select id from [yourTableName] where RelatedId = 0))
relatedID が null であるすべてのレコードを検索し、0 に関連する他のすべての ID を検索します (あなたの場合[1,2]
)
DELETE TABLENAME
FROM TABLENAME T1
WHERE TABLENAME.ID = T1.RELTED_ID AND T1.RELTED_ID = 0;
うまくいくようです...
DELETE
FROM
delete_table
WHERE
delete_table.RelatedId IN (
select Id from(
SELECT
s1.Id
FROM
delete_table s1
WHERE
s1.RelatedId = 0
) as x
)
OR delete_table.RelatedId = 0;