我有两个表Employee_Data
和IOT_Codes_Temp
,我想用Employee_Data.IOT_Codes
更新IOT_Codes_Temp.IOT_Codes
的记录。以下是我的查询:
UPDATE employee_data t1
SET ( t1.iot_codes, t1.iot_codes_numeric ) = (SELECT t2.iot_code,
t2.iot_code_numeric
FROM ot_codes_temp t2
WHERE
t2.office = t1.department);
但它返回错误消息: ORA-01427:单行子查询返回多行。 帮助我摆脱这个错误。
答案 0 :(得分:-1)
错误消息说明了一切:您的"更新"语法需要一行,但您的子选择返回多行。
选项1:限定您的子选择,使其只返回一行
选项2:改变你的" ="到" IN" (或"任何"," A""或" NOT")
这取决于你想要做什么。
答案 1 :(得分:-1)
您尝试使用的语法是INSERT语句..这将为您完成..
DECLARE @IOT_CODE INT;
DECLARE @IOT_CODE_NUMERIC INT;
SET @IOT_CODE=select t2.IOT_CODE From OT_CODES_TEMP t2,employee_data t1 Where t2.OFFICE=t1.DEPARTMENT;
SET @IOT_CODE_NUMERIC =select t2.IOT_CODE_NUMERIC From OT_CODES_TEMP t2,employee_data t1 Where t2.OFFICE=t1.DEPARTMENT;
update employee_data
set
IOT_CODES=@IOT_CODE ,
IOT_CODES_NUMERIC=@IOT_CODE_NUMERIC;
修改强>
因为我投了一票......我进一步研究了这个......你也可以这样做.. Reference
UPDATE
(SELECT table1.value as OLD, table2.CODE as NEW
FROM table1
INNER JOIN table2
ON table1.value = table2.DESC
WHERE table1.UPDATETYPE='blah'
) t
SET t.OLD = t.NEW