我是sql初学者,甚至是编程,最近发现了触发器,我想计算最大活跃行数,以及活跃权重总和 ps:事件记录定义为“cancelled = 0” 我在声明变量的行(第 2 行)附近遇到错误 #1064
我正在将其运行到 PHPMYADMIN (MySQL) 触发器中。
BEGIN
DECLARE @max_rows int;
DECLARE @max_tare int;
SET @max_rows = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET @max_tare= SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row = @max_rows,
max_tare = @max_tare
WHERE id = 1
END
我原以为我会用最大行数和事件权重总和更新第 1 行,但出现错误
MySQL replied: # 1064 - Syntax error near '@max_rows int; DECLARE @max_tare int; SET @max_rows = SELECT COUNT (*) FROM his' at line 2
在 Paul 发表评论后,我将代码更改为:
BEGIN
DECLARE max_r int;
DECLARE max_t int;
SET max_r = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET max_t = SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row = max_r,
max_tare = max_t
WHERE id = 1
END
这是新错误:
MySQL replied: # 1064 - Syntax error near SELECT COUNT (*) FROM history WHERE cancled = 0; SET max_t = SELECT SUM (tare) FR 'at line 4
提前。
最佳答案
感谢@paul Spiegel 和@forpas 的帮助 这段代码帮助解决了问题
IF(NEW.mix != '') THEN
UPDATE max_tare
SET max_row = (SELECT COUNT(*) FROM history WHERE nom LIKE NEW.mix),
max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
ELSE
UPDATE max_tare
SET max_row = (SELECT COUNT(*) FROM history WHERE cancled = 0),
max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
END IF;
END
这对我来说效果很好,谢谢大家
关于mysql - 插入错误语法后选择 count(*) 并选择 sum(my_data)#1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56225646/