首页 文章

从另一个表更新表值返回错误

提问于
浏览
-2

我有两个表 Employee_DataIOT_Codes_Temp ,我想用 IOT_Codes_Temp.IOT_Codes 更新 Employee_Data.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: single-row subquery returns more than one row. 帮我如何摆脱这个错误 .

2 回答

  • -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;
    

    EDIT

    因为我投了一票......我进一步研究了这个......你也可以这样做.. 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
    
  • -1

    错误消息说明了一切:您的“更新”语法需要一行,但您的子选择返回多行 .

    选项1:限定您的子选择,使其仅返回一行

    选项2:将“=”更改为“IN”(或“ANY”,“A”“或”NOT“)

    这取决于你想要做什么 .

相关问题