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に。 。 。選択 (おそらく許可されていますが)
    • テーブルエイリアスの削除。これは絶対に許可されていません。
    • 重複キーのの修正 ステートメント。


    1. JOINクエリを使用してレコードを取得する

    2. ユーザー'root'@'localhost'のアクセスが拒否されたまま-ターミナル、Mac

    3. Symfony2:国ごとに都市を一覧表示

    4. 一連の日付の生成