0

このステートメントのエラーはどこにありますか。テーブル1のフィールド1を、フィールド3の両方のテーブルを結合するテーブル2のフィールド2で更新したいと思います。

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

どうもありがとう

4

3 に答える 3

0

どのフレーバーの SQL を使用しているかはわかりませんが、少なくとも TSQL では、が のSELECT後に来るように再配置する必要があります。SET

UPDATE IP
SET IP.COORD_GB_E = C.WGSE
FROM IP_ANAGRAFLICACOMPLESSO IP
    INNER JOIN COORDOK6 C ON IP.ID_COMPLESSO = C.AZIENDA
于 2012-06-22T18:09:04.917 に答える
0

この URL によると、構文は次のとおりです。

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

(ORACLE 提供の構文例):

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

これは次のようになります: SELECT サブクエリから 1 つの列しか選択できません。サブクエリが、列とテーブル名に関して有効な 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 );

このドキュメントでは、更新された列を囲む括弧を省略するために、更新されている列が 1 つあるかどうかを説明しています。

于 2014-05-26T03:01:17.517 に答える
0

UPDATEORACLE でこのような操作を実行するには、クエリを次のようにする必要があります。常に適切な結合を作成することを忘れないでください。そうしないと、間違ったレコードを更新してしまう可能性があります。

 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
    );
于 2014-05-26T02:11:28.947 に答える