gpt4 book ai didi

mysql - 插入行详细信息(例如用户率平均 SQL)后触发自动平均

转载 作者:行者123 更新时间:2023-11-29 10:32:35 25 4
gpt4 key购买 nike

如何自动化每行的rateAvg

userID pID rate1 rate2 rate3 rate4 rate5   rateCmmt     rateAvg     
42 24 2 4 3 4 1 Lorem ipsum 0
45 25 3 4 4 2 1 Lorem ipsum 0

这是我尝试过的代码。

DROP TRIGGER IF EXISTS `updateAVG`;
CREATE DEFINER=`root`@`localhost`
TRIGGER `updateAVG`
AFTER INSERT ON `tblrate`
FOR EACH ROW UPDATE tblrate SET `rateAvg` = ((`rate1`+`rate2`+`rate3`+`rate4`+`rate5`)/5)

最佳答案

您想要一个before插入触发器:

DROP TRIGGER IF EXISTS `updateAVG`;
CREATE DEFINER=`root`@`localhost` TRIGGER `updateAVG` BEFORE INSERT ON `tblrate`
FOR EACH ROW
BEGIN
SET new.rateAvg = (new.rate + new.rate2 + new.rate3 + new.rate4 + new.rate5) / 5;
END;

您也可以仅使用 View 来执行此操作:

create v_updateAVG as 
select u.*, (u.rate + u.rate2 + u.rate3 + u.rate4 + u.rate5) / 5 as rateAvg
from updateAVG;

或者,在 MySQL 5.7.6+ 中作为生成列:

alter table updateAVG add rateAvg as ((rate + rate2 + rate3 + rate4 + rate5) / 5);

最后两种方法的优点是在插入和更新之后平均值始终是最新的。

关于mysql - 插入行详细信息(例如用户率平均 SQL)后触发自动平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47112532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com