【发布时间】:2017-04-25 09:00:25
【问题描述】:
根据某些情况,我在更新结果集时遇到了困难。一些帐号为空,但基于不同的标识符进行匹配。
我正在使用匹配的帐号更新空帐号,但无法使语法完全正常工作。我遇到了错误
找不到多部分标识符“CMRR.aacount_number”
这是在我引用另一张表的几个不同的地方。
DECLARE @BatchId INT
SET @BatchId = 1030
SELECT
CMRR.id,
CMRR.account_number,
CMRR.URN
FROM
CRA_METRO2_REJECTED_RECORDS AS CMRR
WHERE
batch_id = @BatchId
IF CMRR.account_number = ''
BEGIN
UPDATE CRA_METRO2_REJECTED_RECORDS
SET CMRR.account_number = (SELECT account_number
FROM CRA_METRO2_REJECTED_RECORDS
WHERE URN = CMRR.URN
AND account_number != '')
WHERE id = CMRR.id
END
【问题讨论】:
-
您需要将该帐号存储到一个变量中以备后用或使用
IF(EXISTS(SELECT....)) BEGIN...END -
错误信息很清楚。您没有在
update语句中定义 CMRR 别名。 -
@vkp
CRA_METRO2_REJECTED_RECORDS AS CMRR并且此错误消息发生在UPDATE之前 -
是什么让你觉得@Jared
-
我明白了..您稍后也会在
update中收到错误消息。IF CMRR.account_number = ''导致错误。在select完成后,别名CMRR无效。您可以将帐号存储在变量中并将其用于IF。
标签: sql-server tsql