MySQL INSERT SELECT. Упорядочивает вставку по количеству, но на самом деле не вставляет количество

#mysql #select #count #having #select-insert

#mysql #выберите #количество #имея #выберите-вставить

Вопрос:

Извините за нелепое название!

Возможно ли запустить запрос MySQL INSERT SELECT, где часть ‘SELECT’ включает функцию COUNT() (чтобы воспользоваться предложением HAVING) — это создает несоответствующее количество столбцов в части INSERT.

Например:

 INSERT INTO my_log (user_id, date_finished) 
SELECT COUNT(id) AS count, user_id, '2011-05-31 00:00:00'
FROM assignments WHERE assignment_type = 10 
GROUP BY user_id
HAVING count >=10 
  

Я хочу вставить в ТАБЛИЦУ my_log дату для пользователей, которые выполнили 10 назначений типа 10. На самом деле я немного расширяю это, поэтому важно, чтобы я использовал COUNT и находил только пользователей, которые выполнили 10 или более назначений. Но моя проблема остается в том, что я пытаюсь вставить 3 столбца в объявленные 2 столбца из-за функции COUNT (), поэтому я ищу способ извлечь выгоду из ПОДСЧЕТА, но не возвращать его в моем наборе данных / учитываемом при вставке.

Спасибо за любую помощь 🙂

Ответ №1:

Попробуйте с:

 INSERT INTO my_log ( user_id, date_finished) 
SELECT user_id, '2011-05-31 00:00:00'
FROM assignments WHERE assignment_type = 10 
GROUP BY user_id
HAVING ( COUNT(id) ) >=10