Mysql
 sql >> база данни >  >> RDS >> Mysql

Преобразуване на оператор за сливане в MYSQL с помощта на дублиран ключ

Правилният синтаксис в 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);

Обърнете внимание на използването на правилни, изрични, стандартни , четим JOIN синтаксис. Използвайте го.

Основните промени са

  • Коригиране на архаичния синтаксис.
  • Премахването на скоби не е необходимо за select в insert . . . select (въпреки че вероятно са разрешени).
  • Премахване на псевдонима на таблицата, което определено не е разрешено.
  • Коригиране на on duplicate key изявление.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Стратегия за именуване в хибернация променя имената на таблици

  2. Достъп до частна променлива в PHP (PDO)

  3. PHP формуляр за вход с HTML форма

  4. MySql Connector 6.8.2 RC, Entity Framework 6 и Code First

  5. Има ли разлика в използването на INT(1) срещу TINYINT(1) в MySQL?