Я пытаюсь создать запрос на обновление и сделать небольшой прогресс в получении правильного синтаксиса. Следующий запрос работает:Запрос на обновление MySQL с левым соединением и группой по
SELECT t.Index1, t.Index2, COUNT(m.EventType)
FROM Table t
LEFT JOIN MEvents m ON
(m.Index1 = t.Index1 AND
m.Index2 = t.Index2 AND
(m.EventType = 'A' OR m.EventType = 'B')
)
WHERE (t.SpecialEventCount IS NULL)
GROUP BY t.Index1, t.Index2
Это создает список троек Индекс1, index2, Счетчики событий. Это делается только для случая, когда t.SpecialEventCount имеет значение NULL. Запросы обновления, которые я пытаюсь записать, должны установить этот SpecialEventCount в этот счет, то есть COUNT (m.EventType) в запросе выше. Это число может быть 0 или любое положительное число (следовательно, левое соединение). Index1 и Index2 вместе являются уникальными в таблице t, и они используются для идентификации событий в MEvent.
Как мне изменить запрос выбора, чтобы стать запросом обновления? То есть что-то вроде
UPDATE Table SET SpecialEventCount=COUNT(m.EventType).....
но я смущен, что положить туда и не удалось с множеством различных догадок.
Спасибо, похоже на многие вещи, которые я пробовал. К сожалению, возвращается со следующей ошибкой: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'GROUP BY t.Index1, t.Index2' по строке 9 – Rob
с использованием версии 5.0.90-log, если это помогает – Rob
, отредактированный для использования подзапроса вместо – Hammerite