简体   繁体   English

使用join在oracle语句中进行sql更新

[英]sql update in oracle statement using join

please where is the error in this statement, I want to update a field1 of table 1 with field2 of table 2 joining both tables on a field 3 请在此语句中的错误在哪里,我想用表2的field2更新表1的field1,将两个表都连接到字段3

UPDATE 
     (SELECT IP_ANAGRAFICACOMPLESSO.id_complesso, COORDOK6.AZIENDA , IP_ANAGRAFICACOMPLESSO.COORD_GB_E,  COORDOK6.WGSE 
      FROM ip_anagraficacomplesso 
      INNER JOIN COORDOK6  ON IP_ANAGRAFICACOMPLESSO.ID_COMPLESSO = COORDOK6.AZIENDA )
SET IP_ANAGRAFICACOMPLESSO.COORD_GB_E = COORDOK6.WGSE

Thanks a lot 非常感谢

Not sure which flavor of SQL you are using, but at least in TSQL you would need to rearrange it so the SELECT comes after the SET 不确定使用的是哪种SQL,但是至少在TSQL中需要重新排列,以便SELECTSET之后出现

UPDATE IP
SET IP.COORD_GB_E = C.WGSE
FROM IP_ANAGRAFLICACOMPLESSO IP
    INNER JOIN COORDOK6 C ON IP.ID_COMPLESSO = C.AZIENDA

To perform such an UPDATE in ORACLE, your query should be as below. 要在ORACLE中执行这样的UPDATE ,您的查询应如下所示。 Always remember to create the appropriate join or else you might end up updating the wrong records. 始终记住要创建适当的联接,否则可能会导致更新错误的记录。

 update DAILY D
  set
    (
      D.DEPARTMENT_CODE,
      D.COSTCENTRE_CODE,
      D.USER_ID
    )
    =
    (select distinct DEPT.DEPT_CODE,
      DEPT.CENTRE_CODE,
      PRT.EMP_ID
    from EMP PRT
    inner join DEPT  DEPT
    on DEPT.DEPARTMENT_ID = PRT.DEPARTMENT_ID
    where PRT.LOGIN_ID     = D.LOGIN_ID
    );

According to this URL, the syntax is: 根据此URL,语法为:

http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/update_statement.htm http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/update_statement.htm

(ORACLE-provided syntax example): (ORACLE提供的语法示例):

   UPDATE employee_temp SET (first_name, last_name) =
  (SELECT first_name, last_name FROM employees
   WHERE employee_id = employee_temp.employee_id);

Which would be something like this: You can only select one column from the SELECT subquery - make sure the subquery is a valid INNER JOIN with respect to your column and table names: 这将是这样的:您只能从SELECT子查询中选择一列-确保子查询相对于您的列名和表名是有效的INNER JOIN:

 UPDATE  COORD_GB_E
 SET     IP_ANAGRAFICACOMPLESSO =

 (SELECT COORDOK6.WGSE 
  FROM   ip_anagraficacomplesso INNER JOIN COORDOK6  
  ON     IP_ANAGRAFICACOMPLESSO.ID_COMPLESSO = COORDOK6.AZIENDA );

This documentation states if there is one column being updated to omit the parentheses around the updated column. 该文档说明是否有一列要更新,以忽略已更新列周围的括号。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM