sho*_*ked 2 t-sql sql-server copy
我现在正在尝试创建一个 T-SQL 查询几个小时。谷歌和论坛搜索没有帮助,所以我希望有人能帮助我。
有两个表,Change
和Journal
。中的每一行Change
都有 5 个相关的行Journal
。
我想要做的是列值(复制CreatedDateTime
特定的相关行)从Journal
入列AuthorizationDate
的Change
。这应该对Change
.
这是我迄今为止取得的成就:
UPDATE Change
SET Change.ap_ITSM_MDP_AuthorizationDate =
( SELECT Journal.CreatedDateTime
FROM Journal
JOIN Change
ON Journal.Parentlink_RecID = Change.RecID
WHERE ITSM_ChangeNotes_Subject = 'Status changed to: Authorized'
AND Change.RecID = Journal.ParentLink_RecID
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到以下错误消息:
消息 512,级别 16,状态 1,第 1 行子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。该语句已终止。
我以为我确实通过 WHERE 子句 ( ChangeNotes_Subject = '...'
)将结果限制为一个。我做错了什么?
我认为这会奏效:
UPDATE Change
SET Change.ap_ITSM_MDP_AuthorizationDate =
( SELECT Journal.CreatedDateTime
FROM Journal
WHERE ITSM_ChangeNotes_Subject = 'Status changed to: Authorized'
AND Change.RecID = Journal.ParentLink_RecID
) ;
Run Code Online (Sandbox Code Playgroud)
但使用JOIN
更好 - 避免任何不需要的更新。就是这样:
UPDATE Change
SET Change.ap_ITSM_MDP_AuthorizationDate = Journal.CreatedDateTime
FROM Journal
JOIN Change
ON Change.RecID = Journal.ParentLink_RecID
WHERE ITSM_ChangeNotes_Subject = 'Status changed to: Authorized' ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14278 次 |
最近记录: |