我导入了一个包含无效状态的Members表。它不包含州缩写,而是包含已完成的州名。
以下查询确实有效,并提取了Members.StateName和State.Abbreviation:
Connecticut CT
Maryland MD
Massachusetts MA
现在我正在尝试编写和更新命令,其中我用State.Abbreviation替换Members.StateName。
UPDATE dbo.Members
SET memState = (SELECT s.stAbv FROM dbo.State AS s
JOIN Members AS m ON s.stName = m.memState )
WHERE memState NOT IN (SELECT s.stAbv FROM dbo.State AS s)
错误:子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
该声明已被终止。 我理解错误说我的内部查询返回多行,因此无法更新。我如何让它工作?
答案 0 :(得分:2)
我认为你可以这样做:
UPDATE m
SET memState = s.stAbv
FROM dbo.Members AS m
INNER JOIN dbo.State AS s ON s.stName = m.memState
不完全确定你的WHERE子句,但很可能不需要它。
答案 1 :(得分:0)
您不能为memState分配超过1个值。尝试使用SELECT DISTINCT将重复值连接到一个值。