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中删除相关的值。
INSERT INTO X VALUES (1);
INSERT INTO XconY VALUES (1,"hello");
INSERT INTO Y VALUES (1,"hello");
DELETE FROM X WHERE id = 1;在下面的这些指令集之后,所有三个表都应该是空的。除了单独的查询之外,还有更好的方法来做到这一点吗?
发布于 2022-08-02 19:56:48
MySQL支持多表删除语法(这不是标准的SQL,如果使用其他类型的数据库,则可能不支持这种语法)。
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)https://stackoverflow.com/questions/73212302
复制相似问题