【发布时间】:2012-09-10 21:02:24
【问题描述】:
我正在尝试运行下面的代码,但我不断收到此错误:
消息 512,第 16 级,状态 1,第 1 行 子查询返回超过 1 个 价值。当子查询跟随 =、!=、>、>= 或子查询用作表达式时,这是不允许的。声明已终止。
我正在尝试创建一个字段来识别个人用户。有什么建议吗?
UPDATE dbo.AAASTA_CONTACT
SET dbo.AAASTA_CONTACT.ALIAS_KEY =
(SELECT(SUBSTRING(COALESCE(CAST(ADDR.ADDR_ZIPCODE AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(CON2.CON_LAST_NAME)AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(CON2.CON_FST_NAME)AS NCHAR(5)), ' ')
+ COALESCE(CAST(UPPER(ADDR.ADDR_ADDR_NAME) AS NCHAR(5)), ' '),1,20))
FROM dbo.AAASTA_CONTACT CON2
JOIN dbo.AAASTA_ADDR_PER ADDR
ON (CON2.CON_PERSON_UID = ADDR.T_ADDR_PER_PER_ID))
【问题讨论】:
-
听起来你的内部 SELECT 语句(它定义了你想要设置 ALIAS_KEY 的值)返回多个值。 ALIAS_KEY 应设置为以下哪个值?
-
我只要求一个子字符串。如果我将其作为选择而不是 SET 运行,它会返回一列信息。
-
问题是查询分析器已经推断出该查询有返回多个结果的
potential。 -
哈哈好吧,那它应该知道我的意图而不是我行动的可能性!感谢您的逻辑帮助!
标签: sql sql-server sql-update