sql >> Databasteknik >  >> RDS >> Mysql

Konvertering av merge-satsen till MYSQL med en dubblettnyckel

Rätt syntax i MySQL är:

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

Observera användningen av korrekt, explicit, standard , läsbar JOIN syntax. Använd den.

De största förändringarna är

  • Åtgärda den arkaiska syntaxen.
  • Att ta bort parenteserna behövs inte för select i en insert . . . select (även om de förmodligen är tillåtna).
  • Ta bort tabellaliaset, vilket definitivt inte är tillåtet.
  • Åtgärda on duplicate key uttalande.


  1. Ta bort MySQL-information i tabellen med Cron-jobb

  2. Hur SOUNDEX() fungerar i MariaDB

  3. Sök efter en post - i en databas (utan att ange ett kolumnnamn/tabellnamn)

  4. Det gick inte att ladda drivrutinsklassen com.mysql.jdbc.Driver