sql >> Base de Datos >  >> RDS >> Mysql

Conversión de declaración de combinación a MYSQL usando una clave duplicada

La sintaxis correcta en MySQL es:

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

Tenga en cuenta el uso de estándar adecuado, explícito , legible JOIN sintaxis. Úsalo.

Los principales cambios son

  • Corregir la sintaxis arcaica.
  • No es necesario quitar los paréntesis para select en un insert . . . select (aunque probablemente estén permitidos).
  • Eliminar el alias de la tabla, que definitivamente no está permitido.
  • Arreglar el on duplicate key declaración.