Mysql 一个查询中的多个删除

Mysql 一个查询中的多个删除,mysql,sql,sql-delete,multi-table-delete,Mysql,Sql,Sql Delete,Multi Table Delete,从表1中删除,其中ConditionID=?ConditionID DELETE FROM Table2 WHERE ConditionID=?ConditionID; DELETE FROM Table3 WHERE ConditionID=?ConditionID; ConditionID是表1、表2、表3中的一个列,没有单独运行3次,有没有办法在一个查询中(在mysql中)运行所有这三个列ConditionID在每个列中都是独立的,只是因为它具有相同的名称并不意味着它是同一列。如果您完

从表1中删除,其中ConditionID=?ConditionID

DELETE FROM Table2 WHERE ConditionID=?ConditionID;

DELETE FROM Table3 WHERE ConditionID=?ConditionID;

ConditionID是表1、表2、表3中的一个列,没有单独运行3次,有没有办法在一个查询中(在mysql中)运行所有这三个列
ConditionID
在每个列中都是独立的,只是因为它具有相同的名称并不意味着它是同一列。如果您完全限定了名称,您将能够更好地看到它:

DELETE FROM Table1 WHERE Table1.ConditionID=?ConditionID;

DELETE FROM Table2 WHERE Table2.ConditionID=?ConditionID;

DELETE FROM Table3 WHERE Table3.ConditionID=?ConditionID;

我不知道您的模式是什么样子的,但是如果您对表使用InnoDB或类似的表引擎,并且您有外键,那么您可以设置在删除父项时导致删除派生项的条件。有关这方面的更多信息,请参阅。

如果所有三个表的
条件ID都相同,您应该能够使用:

测试用例:

CREATE TABLE Table1 (id int, ConditionID int);
CREATE TABLE Table2 (id int, ConditionID int);
CREATE TABLE Table3 (id int, ConditionID int);

INSERT INTO Table1 VALUES (1, 100);
INSERT INTO Table1 VALUES (2, 100);
INSERT INTO Table1 VALUES (3, 200);

INSERT INTO Table2 VALUES (1, 100);
INSERT INTO Table2 VALUES (2, 200);
INSERT INTO Table2 VALUES (3, 300);

INSERT INTO Table3 VALUES (1, 100);
INSERT INTO Table3 VALUES (2, 100);
INSERT INTO Table3 VALUES (3, 100);
结果:

DELETE Table1, Table2, Table3
FROM   Table1
JOIN   Table2 ON (Table2.ConditionID = Table1.ConditionID)
JOIN   Table3 ON (Table3.ConditionID = Table2.ConditionID)
WHERE  Table1.ConditionID = 100;

SELECT * FROM Table1;
+------+-------------+
| id   | ConditionID |
+------+-------------+
|    3 |         200 |
+------+-------------+
1 row in set (0.00 sec)

SELECT * FROM Table2;
+------+-------------+
| id   | ConditionID |
+------+-------------+
|    2 |         200 |
|    3 |         300 |
+------+-------------+
2 rows in set (0.00 sec)

SELECT * FROM Table3;
Empty set (0.00 sec)

< >您可以通过使用MySQL“删除”查询来删除多个表中的行。p> 配置文件表包括:

  • 身份证
  • 名字
书桌包括:

  • pid
  • 价格
您可以使用此查询从这两个表中删除特定id的记录

delete profile,books from profile,books where profile.id=18 and profile.id=books.pid;

我想从3个表中删除Id值100。从表1中删除ConditionID=100;从表2中删除ConditionID=100;从表3中删除ConditionID=100;不是调用3次,而是使用一些连接的单一方法吗?非常好,非常出色的方法。不一定是一个好的解决方案。如果id不在
表2
中,但相同的id在
表1
表3
中,是否会删除
表1
表3
中的行?
delete profile,books from profile,books where profile.id=18 and profile.id=books.pid;