如何从两个表中删除?

时间:2013-02-22 19:47:46

标签: mysql sql

美好的一天。

我有2个表 - test1和test2。

结构表test1:

test1

结构表test2:

test2

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

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

它们不是外键!

有可能吗?

3 个答案:

答案 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;

SQL Fiddle Demo

答案 2 :(得分:2)

试试这个

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

DEMO SQLFIDDLE