sql多表关联删除

比如A表有这两个字段aid,nameb表有这两个字段bidaid我用这样sqL语句删除记录deletefroma,bwhereb.aid=a.aidanda.name='... 比如
A表 有这两个字段 aid ,name
b表 有这两个字段 bid aid

我用这样sqL语句删除记录
delete from a ,b where b.aid=a.aid and a.name='1'
怎么在查询器里面执行有错误啊
提示

消息 170,级别 15,状态 1,第 1 行
第 1 行: ',' 附近有语法错误。
展开
 我来答
普实软件
2017-09-28 · 知道合伙人软件行家
普实软件
知道合伙人软件行家
采纳数:1703 获赞数:7398
普实软件ERP专家

向TA提问 私信TA
展开全部

删除多表关联数据的三种方法

1、级联删除

create table a
(
id  varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1)  primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)



表B创建了外码userId 对应A的主码ID,声明了级联删除

测试数据:

insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')


删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了

delete a where id='11'


2、采用存储过程

A表:AID   Aname                               主健:AID

B表:BID   BelongAID Bname               主健:BID,外健:BelongAID 

C表:CID BelongBID Cname                 主健:CID,外健:BelongBID

D表:DID BelongCID Dname                主健:DID,外健:BelongCID

其中:

A表和B表通过A.AID和B.BelongAID  创建了外健关系

B表和C表通过B.BID和C.BelongBID   创建了外健关系

C表和D表通过C.CID和D.BelongCID  创建了外健关系


3、采用触发器

删除Class表中的一条记录的同时删除该记录Class_No字段值在Student表中对应的记录。

Create Trigger Class_delete
on Class
for delete
as
begin
delete from Student
where Class_No=(select Class_No from deleted)
end
百度网友8ac6d36fb
2011-11-09 · TA获得超过621个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:185万
展开全部
删除应该不能同时删除多表。
你是要删两个表的话得分开写。
先删b,再删a
delete from b where aid in(select aid from a where name='1')
delete from a where name='1'
追问
那假设
b表还和 c表有关联
c表 有这两个字段 cid bid
那怎样才能把c表的数据一起删除
追答
那就要用到你写的一部分

delete from c
where bid in(select b.bid from a ,b where b.aid=a.aid and a.name='1')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式