sql - 在 MySQL 的触发器中使用聚合函数

标签 sql mysql triggers aggregate-functions

我有一个“人物”表,其中包含多个属性,包括“年龄”。每次我向这个表中插入一个新的元组时,我都想找出表中列出的所有人的平均年龄。如果平均值高于 50,我想修改插入的元组中的年龄。我为此使用了“BEFORE INSERT”触发器。这是我目前的测试代码(您可以忽略“分隔符”行):

delimiter |
CREATE TRIGGER checkAge BEFORE INSERT ON People
FOR EACH ROW BEGIN
    IF AVG(age) > 50 THEN
      SET NEW.age = 20;
    END IF;
END
|
delimiter ;

我做错了什么?

最佳答案

您仅计算 1 个值的平均值(对于每一行) 你最好使用 SELECT AVG(age) FROM People

关于sql - 在 MySQL 的触发器中使用聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739495/

相关文章:

sql - 为什么探查器在第一次执行时总是读取更高以及如何降低它?

java - 如何将子记录的插入限制为N条记录?

php - 2 个不同的值存储在数据库的一列下

mysql 检索字段名称作为记录集的一部分

MySQL: INSERT INTO ... ON DUPLICATE KEY UPDATE 不触发 AFTER UPDATE 触发器

sql - SQLite 触发器中 "CASE WHEN ... THEN ... DELETE ... END"的正确语法?

java - 如何使用java将日期和时间发送到SQL

sql - 在 SQL (SQLite3) 中使用 IN 和元组集

mysql - 在 RDBMS 中对多值列建模

sql - 在“代替删除”触发器中删除记录