Документация по CREATE EVENT довольно хороша, но для того, чтобы сделать это правильно, требуется некоторое время.
У вас есть две проблемы: во-первых, повторение события , во-вторых, , чтобы оно запускалось ежедневно в 13:00 .
Этот пример создает повторяющееся событие.
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions;
В клиенте MySQL командной строки вы можете:
SHOW EVENTS;
Здесь перечислены каждое событие с его метаданными, например, если оно должно выполняться только один раз или повторяться.
Вторая проблема: указание повторяющегося события на определенный элемент расписания .
Испытывая различные виды выражения, мы можем придумать что-то вроде:
CREATE EVENT IF NOT EXISTS `session_cleaner_event`
ON SCHEDULE
EVERY 13 DAY_HOUR
COMMENT 'Clean up sessions at 13:00 daily!'
DO
DELETE FROM site_activity.sessions;
Для работы вокруг неспособности использовать LIMIT
с GROUP_CONCAT
, можно сгруппироваться результатами запроса sub
, Этот запрос разбивает видео идентификаторы в группы 20 (но это могло быть ДЕЙСТВИТЕЛЬНО медленно на некоторых наборах данных)
select group_concat(v.id) as video_list
from videos as v
where v.duration=0
group by (
select floor(count(v2.id)/20)
from videos as v2
where v2.duration=0
and v2.id <= v.id
)
, С другой стороны, если Вы имеете много результатов, но не хотите такой медленный запрос, можно увеличиться до размера Вашего group_concat_max_len
( https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len) до Вашего max_allowed_packet
( https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet), если бы это все еще не достаточно длинно, необходимо было бы увеличить max_allowed_packet размер также.