mysql - 插入错误语法后选择 count(*) 并选择 sum(my_data)#1064

标签 mysql triggers

我是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/

相关文章:

php - 有没有办法通过 foreach 语句传递变量/$_POST?

php - 如何使用 PHP 数组对 MySQL 中的结果进行分组?

php - 一旦我们在 php 页面中创建触发器,那么我们是否需要在 Mysql 中创建相同的触发器?

mysql - 如何删除触发器中的记录

sql - 仅当特定用户更新行时触发 SQL 触发器

c# - DataTemplate 多个数据触发相同的元素和属性

php - 为每个用户获取值(value)并增加一

java - 如何使用Where子句查询显示从jtextfield到jtable的搜索查询从mysql表

php - 使用 jqGrid 制作考勤表

postgresql - Postgres 触发器