sql >> データベース >  >> RDS >> Mysql

クエリから結果セットを挿入する際のMySQLONDUPLICATE KEY UPDATE

    問題は、重複するキー句では、グループ化関数(COUNTなど)を使用できないことです。 。ただし、この問題を回避する簡単な方法があります。 COUNT(crime_id)の結果を割り当てるだけです 変数の呼び出し。できる 重複キー句で使用します。挿入ステートメントは次のようになります:

    INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
        SELECT 
            `date`, 
            `city`,
            @determined_crimecount := count(`crime_id`) AS `determined_crimecount`
        FROM `big_log_of_crimes`
        GROUP BY `date`, `city`
    ) ON DUPLICATE KEY UPDATE `crimecount` = @determined_crimecount;
    

    それがどのように機能するかを示すSQLフィドルを作成しました: SQL-Fiddle

    UPDATE crimecount = VALUES(crimecount)を使用することもできます 変数なし:

    INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
        SELECT 
            `date`, 
            `city`,
            count(`crime_id`) AS `determined_crimecount`
        FROM `big_log_of_crimes`
        GROUP BY `date`, `city`
    ) ON DUPLICATE KEY UPDATE `crimecount` = VALUES(crimecount);
    

    SQL-Fiddle-2 を参照してください。




    1. HashMapのMyBatisパラメーター

    2. SQL参加の質問

    3. 熱心なインデックススプールとオプティマイザー

    4. MySQL用のJDBCドライバーをロードできません