Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conversion de l'instruction de fusion en MYSQL en utilisant une clé en double

La syntaxe correcte dans MySQL est :

INSERT INTO XYZ (PARENT_JOB_NAME, CHILD_JOB_NAME, FIRST_EXECUTION, SANDBOX, PLATFORM_NAME)
    SELECT ITRR.WORKFLOW_NAME, ITRR.INSTANCE_NAME,
           MIN(ITRR.START_TIME), ITRR.SUBJECT_AREA, 'INFORMATICA'
    FROM ABC IWRR JOIN
         DEF ITRR
         ON IWRR.WORKFLOW_RUN_ID = ITRR.WORKFLOW_RUN_ID 
    WHERE IWRR.USER_NAME IN ('XYZ') AND
          ITRR.RUN_STATUS_CODE <> 2
    GROUP BY ITRR.WORKFLOW_NAME, ITRR.INSTANCE_NAME, ITRR.SUBJECT_AREA
ON DUPLICATE KEY UPDATE FIRST_EXECUTION = VALUES(FIRST_EXECUTION);

Notez l'utilisation de termes appropriés, explicites et standard , lisible JOIN syntaxe. Utilisez-le.

Les principaux changements sont

  • Corriger la syntaxe archaïque.
  • La suppression des parenthèses n'est pas nécessaire pour le select dans un insert insert . . . select (bien qu'ils soient probablement autorisés).
  • Suppression de l'alias de table, ce qui n'est certainement pas autorisé.
  • Correction du on duplicate key déclaration.