Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Konvertierung der Merge-Anweisung in MYSQL unter Verwendung eines doppelten Schlüssels

Die korrekte Syntax in MySQL lautet:

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

Beachten Sie die Verwendung des richtigen, expliziten Standards , lesbares JOIN Syntax. Verwenden Sie es.

Die wichtigsten Änderungen sind

  • Behebung der archaischen Syntax.
  • Das Entfernen der Klammern ist für select nicht erforderlich in einem insert . . . auswählen (obwohl sie wahrscheinlich erlaubt sind).
  • Entfernen des Tabellen-Alias, was definitiv nicht erlaubt ist.
  • Korrektur des auf doppeltem Schlüssel Aussage.