gpt4 book ai didi

MySQL删除多个表中的多行

转载 作者:行者123 更新时间:2023-11-29 06:09:49 25 4
gpt4 key购买 nike

有没有办法在一次查询中同时从三个表中删除多条记录?

categories:
  id, name

sub_categories:
  id, category_id, name

items:
  id, subcategory_id, name

我有我需要删除的类别的 id。例如,5

SQL 查询必须删除具有该 id 的类别。

categories.id = 5

此外,它必须删除该类别的所有子类别。

sub_categories.category_id = categories.id

最后,从那些在步骤 2 中删除的子类别中删除所有项目。

items.subcategory_id = sub_categories.id

最佳答案

如果您使用 ON DELETE CASCADE 引入外键约束,您可以从多个表中删除的一种方法。

这是反过来的:

DELETE C,SC,I
FROM categories C
INNER JOIN sub_categories SC ON C.id = SC.category_id
INNER JOIN items I ON SC.id = I.subcategory_id
WHERE C.id = 5;

检查这个 Delete with join(multiple tables)

编辑:

如果子类别下没有任何项目,则需要将最后一个 INNER JOIN 替换为 LEFT JOIN

DELETE C,SC,I
FROM categories C
INNER JOIN sub_categories SC ON C.id = SC.category_id
LEFT JOIN items I ON SC.id = I.subcategory_id
WHERE C.id = 5;

关于MySQL删除多个表中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981942/

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