3

再会。

我有 2 个表 - test1 和 test2。

结构表test1:

测试1

结构表test2:

测试2

需要使用一个查询删除表test1 where 中的行并删除表test2 where 中idn='22222'的所有行。table2.subscription_id = table1.subscription_id

不使用while或forech,只有一个sql查询!

它们不是外键!

是否可以?

4

3 回答 3

4

当然这是可能的。

查看文档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'; 

其他方式也是可能的。

如果您一直在使用外键,那会更简单。

于 2013-02-22T19:51:52.383 回答
3

这不起作用:

DELETE Table1, Table2
FROM Table1
LEFT JOIN Table2
ON Table1.Id = Table2.Id
WHERE Table1.Id = 1;

SQL 小提琴演示

于 2013-02-22T19:51:34.860 回答
2

试试这个

   DELETE
        test1, test2
   FROM
   test1  JOIN test2 
   WHERE
        test1.idn = 22222 AND
        test2.description_id = test1.description;

演示 SQLFIDDLE

于 2013-02-22T19:54:48.463 回答