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
如果要删除一个类别并执行其下的新闻和新闻其下的评论一起删除 应该怎么写?
展开
 我来答
Kan0818
2010-01-11 · TA获得超过112个赞
知道小有建树答主
回答量:184
采纳率:0%
帮助的人:222万
展开全部
按次序删除三张表就可以了:
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
我为人人服务队
2010-01-11 · TA获得超过1505个赞
知道小有建树答主
回答量:799
采纳率:0%
帮助的人:794万
展开全部
写一个触发器可以帮你实现你想要的功能

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

没有调试,不过应该没有问题,删除类了之后,另外两个表的相关内容会自动删除。希望能够帮助你解决问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangyanjj
2010-01-11 · TA获得超过143个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:240万
展开全部
你如果要每次删除类表表信息就联动删除新闻和评论的话,你要写一个触发器绑到表上。

如果是一条一条删的话,你可以直接这样

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'));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式