2013-12-09 8 views
2

Я пытаюсь запустить запрос INSERT на основе SELECT с инструкцией «ON DUPLICATE KEY UPDATE». Выполняется запрос SELECT, и результирующие данные, если я должен вводить его «вручную», приведут к дублированию ключевой проблемы. Все идет нормально. Однако нижеприведенный запрос не обновляет значение в «et_report_ymd.quotes», как я и ожидал.INSERT from SELECT with ON DUPLICATE KEY UPDATE

INSERT IGNORE INTO et_report_ymd 
SELECT 
    NULL, 
    t.year AS year, 
    t.month AS month, 
    t.day AS day, 
    SUM(t.quotes) AS quotes 

FROM source_table AS t 

GROUP BY t.year, t.month, t.day 

ON DUPLICATE KEY UPDATE 
    et_report_ymd.quotes = quotes 

Вся помощь приветствуется ...

ответ

2

И только тогда, когда вы решили обратиться за помощью, вы придумали решение, как всегда.

INSERT IGNORE INTO et_report_ymd 
SELECT 
    NULL, 
    t.year AS year, 
    t.month AS month, 
    t.day AS day, 
    SUM(t.quotes) AS quotes 

FROM source_table AS t 

GROUP BY t.year, t.month, t.day 

ON DUPLICATE KEY UPDATE 
et_report_ymd.quotes = VALUES(quotes) 

Обратите внимание на «ЗНАЧЕНИЯ (котировки)» часть в конце запроса, а не только «кавычки».