美好的一天。
我有2个表 - test1和test2。
结构表test1:
结构表test2:
需要在表 test1 中使用一个查询删除行idn='22222'
并删除表 test2 中table2.subscription_id = table1.subscription_id
的所有行。
不使用while或forech,只有一个SQL查询!
它们不是外键!
有可能吗?
答案 0 :(得分:4)
当然有可能。
查看DELETE
的{{3}}(他们只为多表删除提供了一些段落)。
语法:
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';
其他方式也是可能的。
如果你一直在使用外键,那就更简单了。
答案 1 :(得分:3)
这不起作用:
DELETE Table1, Table2
FROM Table1
LEFT JOIN Table2
ON Table1.Id = Table2.Id
WHERE Table1.Id = 1;
答案 2 :(得分:2)
试试这个
DELETE
test1, test2
FROM
test1 JOIN test2
WHERE
test1.idn = 22222 AND
test2.description_id = test1.description;