首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL UPDATE语句对记录的影响小于select语句。

T-SQL UPDATE语句对记录的影响小于select语句。
EN

Stack Overflow用户
提问于 2019-11-27 16:47:03
回答 1查看 553关注 0票数 0

我试图从另一个表中用日期列更新一个表的DateTime列。

在更新之前,我将得到受影响的记录,以便查看更新中将影响哪些记录。因此,我使用WHERE子句执行SELECT语句:

备注

  • DateTimeFieldDateTime
  • DateField类型的是Date

型的

代码:

代码语言:javascript
复制
SELECT tblToUpdate.*    
FROM MyTable1 tblToUpdate 
INNER JOIN MyTable2 fromTbl on tblToUpdate.Id = fromTbl.Id    
WHERE    
    ISNULL(fromTbl.DateField, GETDATE()) >= DATEFROMPARTS(1753, 1, 1)
    AND ((fromTbl.DateField IS NOT NULL AND tblToUpdate.DateTimeField IS NULL)
         OR
         (fromTbl.DateField IS NULL AND tblToUpdate.DateTimeField IS NOT NULL)
         OR
         fromTbl.DateField <> CAST(tblToUpdate.DateTimeField AS DATE))

UPDATE tblToUpdate
SET tblToUpdate.DateTimeField = fromTbl.DateField
FROM MyTable1 tblToUpdate 
INNER JOIN MyTable2 fromTbl ON tblToUpdate.Id = fromTbl.Id
WHERE   
    ISNULL(fromTbl.DateField, GETDATE()) >= DATEFROMPARTS(1753, 1, 1) 
    AND (       
         (fromTbl.DateField IS NOT NULL AND tblToUpdate.DateTimeField IS NULL)
         OR
         (fromTbl.DateField IS NULL AND tblToUpdate.DateTimeField IS NOT NULL)
         OR
         fromTbl.DateField <> CAST(tblToUpdate.DateTimeField AS DATE)
        )

请注意,在更新DateField之前,我在Where子句中选中DateTime范围。

问题是,SELECT语句返回的记录数与受UPDATE语句影响的记录数不相同。

UPDATE语句影响的记录少于SELECT语句返回的记录。

如果from和where子句在两个语句中相同,为什么会发生这种情况?

我认为SELECT返回的记录和UPDATE语句分别影响的记录数量应该是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-27 16:57:29

这很容易证明。当有多行满足连接谓词时,您将从select和update中获得不同的行计数。

代码语言:javascript
复制
create table Header(HeadID int identity, Name varchar(50))
insert Header select 'test'

create table Details(DetailsID int identity, HeadID int, Name varchar(50))
insert Details values(1, 'asdf'),(1,'qwer')

select * --this returns 2 rows
from Header h
join Details d on d.HeadID = h.HeadID

update h --only 1 row affected
set Name = 'what?'
from Header h
join Details d on d.HeadID = h.HeadID
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59074911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档