Mysql - 删除多表

时间:2011-03-25 16:32:19

标签: mysql

DELETE a,b 
FROM a AS a
INNER JOIN b AS b ON a.b_id = b.id
WHERE a.id IN (1,2,3,4)

以上查询只删除1条记录,为什么?我想删除所有4条记录

2 个答案:

答案 0 :(得分:1)

我按如下方式创建了一个测试样本:

使用测试
DROP TABLE IF EXISTS a;
DROP TABLE IF EXISTS b;
CREATE TABLE a(id INT NOT NULL PRIMARY KEY);
CREATE TABLE b(id INT NOT NOT PRIMARY KEY);
插入值(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
插入b值(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
SELECT * FROM a;
SELECT * FROM b;
删除a。*来自INNER JOIN b on a.id = b.id WHERE a.id IN(1,2,3,4);
SELECT * FROM a;

以下是我的结果:

lwdba @ localhost(DB test)::使用测试
数据库改变了 lwdba @ localhost(DB test):: DROP TABLE IF EXISTS a;
查询正常,0行受影响(0.06秒)

lwdba @ localhost(DB test):: DROP TABLE IF EXISTS b;
查询正常,0行受影响(0.06秒)

lwdba @ localhost(DB test):: CREATE TABLE a(id INT NOT NULL PRIMARY KEY);

查询OK,0行受影响(0.23秒)

lwdba @ localhost(DB test):: CREATE TABLE b(id INT NOT NOT PRIMARY KEY);

查询OK,0行受影响(0.17秒)

lwdba @ localhost(DB test)::插入值(1),(2),(3),(4),(5),(6),(7),(8),(9) ),(10);
查询OK,10行受影响(0.06秒)
记录:10个重复:0警告:0

lwdba @ localhost(DB test):: INSERT INTO b VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9) ),(10);
查询OK,10行受影响(0.06秒)
记录:10个重复:0警告:0

lwdba @ localhost(DB test):: SELECT * FROM a;
+ ---- +
| id |
+ ---- +
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
10行(0.00秒)

lwdba @ localhost(DB test):: SELECT * FROM b;
+ ---- +
| id |
+ ---- +
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
10行(0.00秒)

lwdba @ localhost(DB test)::删除a,b来自内部联接b a.id = b.id WHERE a.id IN(1,2,3,4); 查询正常,4行受影响(0.08秒)

lwdba @ localhost(DB test):: SELECT * FROM a;
+ ---- +
| id |
+ ---- +
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
6行(0.00秒)

lwdba @ localhost(DB test):: SELECT * FROM b;
+ ---- +
| id |
+ ---- +
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
6行(0.00秒)

试一试!!!

BTW我从您的查询中删除了“AS a”和“AS b”,并将a.b_id更改为a.id

答案 1 :(得分:-1)

DELETE命令不适用于JOIN