sql 删除 三张表问题数据
比如我有三张表分别是类别表lb_id,name新闻表xw_id,lb_id,content等评论表pl_id,xw_id,content如果要删除一个类别并执行其下的新闻...
比如我有三张表 分别是
类别表 lb_id,name
新闻表 xw_id,lb_id,content等
评论表 pl_id,xw_id,content
如果要删除一个类别并执行其下的新闻和新闻其下的评论一起删除 应该怎么写? 展开
类别表 lb_id,name
新闻表 xw_id,lb_id,content等
评论表 pl_id,xw_id,content
如果要删除一个类别并执行其下的新闻和新闻其下的评论一起删除 应该怎么写? 展开
3个回答
展开全部
按次序删除三张表就可以了:
delete from 评论表 C
where exists(
select 1 from 新闻表 B, 类别表 A
where B.lb_id = A.lb_id and B.xw_id = C.xw_id
and A.lb_id = 要删除的类别ID
/* 或:and A.name = 要删除的类别name */
)
delete from 新闻表 B
where exists(
select 1 from 类别表 A
where B.lb_id = A.lb_id and A.lb_id = 要删除的类别ID
)
delete from 类别表 where lb_id = 要删除的类别ID
delete from 评论表 C
where exists(
select 1 from 新闻表 B, 类别表 A
where B.lb_id = A.lb_id and B.xw_id = C.xw_id
and A.lb_id = 要删除的类别ID
/* 或:and A.name = 要删除的类别name */
)
delete from 新闻表 B
where exists(
select 1 from 类别表 A
where B.lb_id = A.lb_id and A.lb_id = 要删除的类别ID
)
delete from 类别表 where lb_id = 要删除的类别ID
展开全部
写一个触发器可以帮你实现你想要的功能
如
create trigger TR on 类别表
for delete
as
begin
declare @ID int
select @ID=(select deleted.lb_id from delete)
delete from 新闻表 where lb_id=@ID
delete from 评论表 where lb_id=@ID
end
没有调试,不过应该没有问题,删除类了之后,另外两个表的相关内容会自动删除。希望能够帮助你解决问题。
如
create trigger TR on 类别表
for delete
as
begin
declare @ID int
select @ID=(select deleted.lb_id from delete)
delete from 新闻表 where lb_id=@ID
delete from 评论表 where lb_id=@ID
end
没有调试,不过应该没有问题,删除类了之后,另外两个表的相关内容会自动删除。希望能够帮助你解决问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你如果要每次删除类表表信息就联动删除新闻和评论的话,你要写一个触发器绑到表上。
如果是一条一条删的话,你可以直接这样
delete from 新闻表 where lb_id in(select lb_id from 类别表 where name='XXXX');
delete from 评论表 where xw_id in(select xw_id from 新闻表 where lb_id in(select lb_id from 类别表 where name='XXXX'));
如果是一条一条删的话,你可以直接这样
delete from 新闻表 where lb_id in(select lb_id from 类别表 where name='XXXX');
delete from 评论表 where xw_id in(select xw_id from 新闻表 where lb_id in(select lb_id from 类别表 where name='XXXX'));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询