【发布时间】:2016-04-18 05:53:39
【问题描述】:
我正在尝试更新一个加入另一个表的表,在论坛中找到了一些链接,仅参考以下链接是我准备的查询:
update WO
set WO.[Status] = 'Closed'
from [Work Orders] as WO
WHERE
wO.[Seq.HD #] IN (
select [Incident #]
from Incident INC
where
INC.[Category Description] = 'test'
and INC.Network = 'test'
)
and WO.[Category Description] in('test1', 'test2')
不知道为什么,但它正在更新[Work Orders] 表中的所有记录。
任何帮助将不胜感激。
【问题讨论】:
-
您可能会发现 [Work Orders] 表中的所有记录都与您的 where 子句匹配。如果您执行 select * FROM [Work Orders] as WO where wO.[Seq.HD #] in(select [Incident #] from Incident INC where INC.[Category Description] = 'test' and INC.Network = 'test ') 和 WO.[Category Description] in('test1', 'test2') 你得到你期望的结果了吗?
-
嗨,卡梅伦,感谢您的回复。是的,当我触发 Select 语句时,我得到了所需的内容。但是当我使用相同的条件并更新表时,所有记录都会更新。
-
我还注意到一件事,更新后它显示一条消息,即更新了 7 行,但有超过 20000 行符合上述条件,并且正在更新所有行(超过 100000)。
-
你确定这些数字是正确的吗?我的意思是它显示 7 行,更新大约 1,000,000 和大约 20,000 匹配?我怀疑情况是否真的如此,因为这将表明 SQL 服务器存在严重问题。你怎么知道这个 SQL 脚本正在更新所有的行?会不会是其他一些更新行的脚本?
-
这是一个生产数据库,一个本地开发数据库还是什么?
标签: join sql-server-2012