Mysql 一个查询中的多个删除
从表1中删除,其中ConditionID=?ConditionIDMysql 一个查询中的多个删除,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在每个列中都是独立的,只是因为它具有相同的名称并不意味着它是同一列。如果您完
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;