这是我的查询。我正在尝试更新表格中的新列:
我遇到了这个错误:
update [dbo].[I_InstallBase_Updated_1]
set updated_padid = (SELECT
CASE
WHEN LEN(padid) - LEN(REPLACE(padid,'.','')) > 1
THEN LEFT(padid,CHARINDEX('.',padid,CHARINDEX('.',padid,1)+1)-1)
ELSE padid -- if there are 1 or 0 dots(.) then return the entire value
END as updated, *
FROM
[I_InstallBase_Updated_1]
WHERE
serial_number LIKE 'SKE%'
AND PARENT_INSTANCE_END_DATE IS NULL
AND INSTANCE_USAGECODE = 'IN_RELATIONSHIP'
AND instance_status != 'Expired'
AND installed_location_type = 'HZ_PARTY_SITES'
AND padid != 'n/a'
AND padid LIKE ('%.%')
)
我遇到了这个错误:
我做错了什么?当子查询没有引入 EXISTS 时,在选择列表中只能指定一个表达式。
SELECT
中添加TOP(1)
,更好的修复方法:更改逻辑,使子查询仅返回单个值以进行更新。 - Tim Biegeleisen,*
,导致返回多列。 - Jens