【发布时间】:2019-05-09 00:46:26
【问题描述】:
UPDATE rm
SET rm.cost_sqft = ISNULL((SELECT
CASE
WHEN (rm.rm_cat IN ('8','NON-REPORT') AND rm.space_fee = 'No')
THEN '0'
ELSE rent_w.w * @rental_rate
END
FROM
@rental_weight AS rent_w, bl, rm
WHERE
rm.main_contact = rent_w.space_type
AND rm.description = rent_w.space_quality
AND bl.cost_type = rent_w.campuse_cost
AND bl.bl_id = rm.bl_id),'0')
WHERE rm.bl_id = @bl_id
AND rm.fl_id = @fl_id
AND rm.rm_id = @rm_id
运行此语句时,我收到此错误:
消息 512,级别 16,状态 1,过程 icat_rm_cost_sqft,第 100 行 [批处理开始第 2 行]
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
【问题讨论】:
-
邮件的哪一部分你不明白?您的查询有一个子查询,并且消息似乎很清楚。
-
whats wrong in the code> 为什么我会收到此错误消息?
-
如果您从一些介绍开始,这个问题会更容易阅读。请看How do I ask a good question
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 多年前),不鼓励使用它