0

mysql テーブルがあるとしましょう

Id    RelatedId
1     0
2     0
3     1
4     2
5     1
6     2

単一の MySQL クエリで、RelatedId=0 のすべてのレコードを削除し、次に Id=RelatedId の子を削除するにはどうすればよいですか?

4

4 に答える 4

1

ClaireG の回答に代わる方法は、ON DELETE CASCADE に設定された外部キーとの関係を強制することです。

于 2013-08-13T12:33:10.180 に答える
0

2 回確認する必要があります。

DELETE FROM [yourTableName] 
WHERE RelatedId = 0
   OR (RelatedId in 
         (select id from [yourTableName] where RelatedId = 0))

relatedID が null であるすべてのレコードを検索し、0 に関連する他のすべての ID を検索します (あなたの場合[1,2])

于 2013-08-13T12:36:27.997 に答える
0
DELETE TABLENAME 
FROM TABLENAME T1
WHERE TABLENAME.ID = T1.RELTED_ID AND T1.RELTED_ID = 0;
于 2013-08-13T12:46:54.143 に答える
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;
于 2013-08-13T12:43:10.123 に答える