如何防止 sum(f)=0 插入?
INSERT INTO `t_1` (a,b,c)
SELECT d,e,sum(f)
GROUP by d,e
我试图sum(f)>0
在查询结束时添加条件 WHERE。但它以错误结束。
使用 GROUP by 时,您可以使用 HAVING 子句过滤掉组。
SELECT d,e,sum(f)
GROUP by d,e
HAVING sum(f) > 0
试试这个:
INSERT INTO `t_1` (a,b,c)
SELECT d,e,sum(f)
--FROM -- don't forget this line
GROUP by d,e
HAVING sum(f) > 0
WHERE
andHAVING
子句的区别在于HAVING
子句评估聚合(SUM()、COUNT()、MAX() 等函数)条件,而WHERE
子句不能包含聚合函数。
之前GROUP BY
,你可以在 MySQL 文档中看到select 语法,当你前面有 'insert into' 时,它应该是相似或相同的。
(尽管您的意思可能是“拥有……”而不是“在哪里”)。
SELECT d,e,sum(f)
FROM mytable
GROUP by d,e
HAVING sum(f) > 0
或者...
如果该值为 0,则在引发异常的触发器中放置一些逻辑。