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 行: ',' 附近有语法错误。 展开
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 行: ',' 附近有语法错误。 展开
2个回答
展开全部
删除多表关联数据的三种方法
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
展开全部
删除应该不能同时删除多表。
你是要删两个表的话得分开写。
先删b,再删a
delete from b where aid in(select aid from a where name='1')
delete from a where name='1'
你是要删两个表的话得分开写。
先删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')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询