gpt4 book ai didi

mysql - 删除引用另外 2 个表的查询

转载 作者:行者123 更新时间:2023-11-29 13:43:22 26 4
gpt4 key购买 nike

我有 3 个表 tab1、tab2 和 tab3。其中tab1的主键是tab2的外键和选项卡 2 的主键是选项卡 3 的外键

TAB1  |  TAB2     |  TAB3
-----------------------------
ID | ID | ID
| TAB1_ID | TAB2_ID

我想通过以下方式删除选项卡 3 中的一行:

DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=TAB1.ID

否则

DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=3

谁能建议一个正确的方法来解决这个问题?

最佳答案

您可以使用多表DELETE语法:

  1. DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=TAB1.ID

    DELETE TAB3
    FROM TAB3
    JOIN TAB2 ON TAB2.ID = TAB3.TAB2_ID
    JOIN TAB1 ON TAB1.ID = TAB2.TAB1_ID
  2. DELETE FROM TAB3 WHERE TAB2_ID=TAB2.ID AND TAB2.TAB1_ID=3

    DELETE TAB3
    FROM TAB3
    JOIN TAB2 ON TAB2.ID = TAB3.TAB2_ID
    WHERE TAB2.TAB1_ID = 3

但是,如果您将外键配置为 CASCADE 删除,则只要删除父记录,MySQL 就会自动删除子行(也许这就是您想要的?)。

关于mysql - 删除引用另外 2 个表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com