再会。
我有 2 个表 - test1 和 test2。
结构表test1:
结构表test2:
需要使用一个查询删除表test1 where 中的行并删除表test2 where 中idn='22222'
的所有行。table2.subscription_id = table1.subscription_id
不使用while或forech,只有一个sql查询!
它们不是外键!
是否可以?
当然这是可能的。
查看文档(DELETE
他们有一些仅用于多表删除的段落)。
句法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
以您为例:
DELETE test1.*, test2.*
FROM test1, test2
WHERE test1.subscription_id = test2.subscription_id
AND test1.idn = '22222';
其他方式也是可能的。
如果您一直在使用外键,那会更简单。
这不起作用:
DELETE Table1, Table2
FROM Table1
LEFT JOIN Table2
ON Table1.Id = Table2.Id
WHERE Table1.Id = 1;
试试这个
DELETE
test1, test2
FROM
test1 JOIN test2
WHERE
test1.idn = 22222 AND
test2.description_id = test1.description;