sql >> Databáze >  >> RDS >> Mysql

Konverze příkazu merge do MYSQL pomocí duplicitního klíče

Správná syntaxe v MySQL je:

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

Všimněte si použití správného, ​​explicitního, standardního , čitelné JOIN syntax. Použijte to.

Hlavní změny jsou

  • Oprava archaické syntaxe.
  • Pro select není nutné odstraňovat závorky v insert . . . select (ačkoli jsou pravděpodobně povoleny).
  • Odstranění aliasu tabulky, což rozhodně není povoleno.
  • Oprava on duplicate key prohlášení.


  1. Znát vztahy mezi všemi tabulkami databáze v SQL Server

  2. Zaznamenejte všechny dotazy v mysql

  3. Varování:mysqli_query() očekává, že parametr 1 bude zadán booleovsky mysqli

  4. Syntaxe MySQL při vytváření cizího klíče