Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conversão da instrução de mesclagem para MYSQL usando uma chave duplicada


A sintaxe correta no MySQL é:
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);

Observe o uso adequado, explícito, padrão , legível JOIN sintaxe. Use-o.

As principais mudanças são
  • Corrigindo a sintaxe arcaica.
  • A remoção dos parênteses não é necessária para o select em um insert . . . select (embora provavelmente sejam permitidos).
  • Removendo o alias da tabela, o que definitivamente não é permitido.
  • Corrigindo o on duplicate key declaração.