如何使用一个键从另一个表中删除?

时间:2014-02-04 06:13:07

标签: mysql asp.net sql

我有一张名为
的表 Category_tbl

Id
Categoryname
info

subcategory_tbl

id
categoryid
subcatname
info

product_tbl

id
subcat
info

我在这里subcategory_tbl有类别id,product_tbl的子类别id为subcat.now如果我想要删除一个类别那么我需要删除子类别_Tbl和product_tbl中相同键的所有相应数据。我能不能这样做?我尝试加入,但它无法正常工作

3 个答案:

答案 0 :(得分:0)

外键上没有cascading deletes,您可以将其作为从subcategoryproduct以及最后category的一系列删除操作。假设您要删除类别123:

delete 
from product_tbl
where subcatid in
(
  select id
  from subcategory_tbl
  where categoryid = 123
);

delete 
from subcategory_tbl
where categoryid = 123;

delete 
from Category_tbl
where id = 123;

但是,如果您在两个外键上都定义了ON DELETE CASCADE,那么您需要做的就是删除该类别,同时也会删除产品和子类别。危险但有效。

答案 1 :(得分:0)

不幸的是,他们不是以delete的方式提问你的方式。由于表格是not related to each other in any manner ..只是通过让一个列与其他表格具有相同的值,一个无法关联delete命令删除两个表的行......

必须有一些标准,我们可以通过这些标准加入表格,然后删除行...这里我们没有......

答案 2 :(得分:0)

首先从具有外键的表中删除数据,然后从具有主键的表中删除数据。使用多个删除语句...