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条记录
答案 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