首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从每个连接的表中删除一行

问如何从每个连接的表中删除一行
EN

Stack Overflow用户
提问于 2022-08-02 18:41:56
回答 1查看 51关注 0票数 0
代码语言:javascript
复制
CREATE TABLE X(
id INTEGER primary key
);

CREATE TABLE XconY(
id INTEGER not null references x(id),
id2 varchar(20) not null references Y(id2),
);

CREATE TABLE Y(
col BOOLEAN,
id2 varchar(20) PRIMARY KEY
);

我的目标是从表X中删除一个值,它应该从XconY和Y中删除相关的值。

代码语言:javascript
复制
INSERT INTO X VALUES (1);
INSERT INTO XconY VALUES (1,"hello");
INSERT INTO Y VALUES (1,"hello");

DELETE FROM X WHERE id = 1;

在下面的这些指令集之后,所有三个表都应该是空的。除了单独的查询之外,还有更好的方法来做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 19:56:48

MySQL支持多表删除语法(这不是标准的SQL,如果使用其他类型的数据库,则可能不支持这种语法)。

代码语言:javascript
复制
mysql> select * from X join XconY using (id) join Y using (id2);
+-------+----+------+
| id2   | id | col  |
+-------+----+------+
| hello |  1 |    1 |
+-------+----+------+
1 row in set (0.00 sec)

mysql> delete X, XconY, Y from X join XconY using (id) join Y using (id2);
Query OK, 3 rows affected (0.01 sec)

mysql> select * from X join XconY using (id) join Y using (id2);
Empty set (0.00 sec)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73212302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档