sql >> Database teknologi >  >> RDS >> Mysql

Konvertering af fletteerklæring til MYSQL ved hjælp af en duplikatnøgle

Den korrekte syntaks i MySQL er:

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

Bemærk brugen af ​​korrekt, eksplicit, standard , læsbar JOIN syntaks. Brug det.

De største ændringer er

  • Reparering af den arkaiske syntaks.
  • Det er ikke nødvendigt at fjerne parenteserne for select i et insert . . . select (selvom de nok er tilladt).
  • Fjernelse af tabelaliasset, hvilket absolut ikke er tilladt.
  • Reparering af on duplicate key erklæring.


  1. Hvordan undslipper jeg et reserveret ord i Oracle?

  2. ændre begivenhedsplanlægningsstatus i mysql

  3. Forkert heltalsværdi:'' for kolonnefejl

  4. Tilfældig PRIMÆR NØGLE for Innodb