You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL事件中嵌入聚合函数 实现疫苗接种数据每日自动统计

错误原因
  • 语法混用:VALUES关键字仅支持插入常量值列表,不能直接跟COUNT()这类聚合查询逻辑,你错误混合了INSERT ... VALUES和INSERT ... SELECT两种插入语法
  • 逻辑错误:拆分两次INSERT会生成两行不完整的记录,一行只有统计时间、一行只有接种人数,不符合将两个字段存入同一条记录的需求
  • 调度规则错误:现有ON SCHEDULE AT ...配置仅会触发一次事件,无法实现每日定时执行的需求
修正后的完整代码
SET GLOBAL event_scheduler = ON;

CREATE TABLE IF NOT EXISTS vaccinated_tally(
ID INT NOT NULL AUTO_INCREMENT,
last_update TIMESTAMP,
fully_vaccinated_tally INT,
PRIMARY KEY (ID));

DELIMITER //

CREATE EVENT IF NOT EXISTS daily_tally
-- 配置为每天0点执行,可修改STARTS后的时间自定义执行时点
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(CURDATE(), INTERVAL 1 DAY)
ON COMPLETION PRESERVE
ENABLE
DO BEGIN
    INSERT INTO vaccinated_tally(last_update, fully_vaccinated_tally)
    SELECT 
        NOW(),
        COUNT(pvh.nhs_number)
    FROM patient_vaccine_history pvh
    WHERE pvh.dose = 2;
END//

DELIMITER ;
改动说明
  • 合并了两次插入操作为一次INSERT ... SELECT语句,直接将时间戳和统计结果作为查询结果插入目标表,不需要VALUES关键字,解决COUNT用法报错的问题
  • 调整事件调度规则为每日循环执行,默认执行时间为每天0点,你可以根据需求修改STARTS后的时间参数自定义执行时点
  • 增加了IF NOT EXISTS配置,避免表、事件重复创建时报错
  • 增加ON COMPLETION PRESERVE配置,保证事件执行后不会自动删除,持续循环触发

内容的提问来源于stack exchange,提问作者bethfm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:09:02