SqlServer Update更新语句因where条件不正确 造成更新全表的情况

本文详细分析了一段SQL语句在误操作后导致的全表更新问题,通过对比原始和修改后的语句,揭示了误操作的根源,并提供了解决方案。同时,解释了误操作如何使看似只更新少量记录的语句实际上进行了全表更新,为开发者提供了宝贵的经验教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



select PERSONID into #t1 from ATDADJUSTTIMEORDER 
where PERSONID not in(
select PERSONID from ATDEMPLOYEECALENDAR)
and PERSONID in(
select PERSONID from PSNACCOUNT where ACCESSIONSTATE in('1','2','6'))
and TIMEORDERID is null


update ATDADJUSTTIMEORDER set TIMEORDERID='1' where PERSONID in (select PERSONID in#t1)



本来是 PERSONID IN(select PERSONID FROM #t1) ,写的比较快,鼠标移动莫名了成了上面的结果


     但是上面的是可以执行的, #t1 数据是空的, 但是update 语句是全表更新了.  看上去还以为更新0条记录呢,结果不是


drop table #t1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值