SQLServer带inner join的更新、删除

http://blog.163.com/zhaoyanping_1125/blog/static/201329153201209104541109/

一、        删除文章5,级联删除资料、附件。

表和表之间如果用外键关联的话,删除主表数据的前提必须是先将子表相关数据删除。

方法1

delete from Attachment where MatID in (select MatID from Material where AtrID=5)

delete from Material where AtrID=5

delete from Article where AtrID=5

 

方法2

DELETE A FROM Attachment A

INNER JOIN Material M ON A.MatID=M.MatID

WHERE M.AtrID=5

 

二、        更改文章1下所有附件名称为“附件一”。

方法1

update Attachment

set Name='附件一'

where MatID in (select MatID from Material where AtrID=1)

 

方法2

UPDATE A SET Name='附件一'

FROM Attachment A

INNER JOIN Material M ON A.MatID=M.MatID

WHERE M.AtrID=1

 

总结:

这两个问题,方法2都可以从联合查询的方向去考虑这个问题,针对部分数据(小范围的数据)更新和删除。

 

这两种方法比较,第一种方法的in,当数据量比较大时,效率低;况且第二种方法简单易读。所以建议使用第二种方法实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值