2

如何防止 sum(f)=0 插入?

INSERT INTO `t_1` (a,b,c)
 SELECT d,e,sum(f)
 GROUP by d,e

我试图sum(f)>0在查询结束时添加条件 WHERE。但它以错误结束。

4

4 回答 4

4

使用 GROUP by 时,您可以使用 HAVING 子句过滤掉组。

SELECT d,e,sum(f)  
GROUP by d,e
HAVING sum(f) > 0
于 2012-06-20T00:17:42.893 回答
4

试试这个:

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

WHEREandHAVING子句的区别在于HAVING子句评估聚合(SUM()、COUNT()、MAX() 等函数)条件,而WHERE子句不能包含聚合函数。

于 2012-06-20T00:22:21.050 回答
1

之前GROUP BY,你可以在 MySQL 文档中看到select 语法,当你前面有 'insert into' 时,它应该是相似或相同的。

(尽管您的意思可能是“拥有……”而不是“在哪里”)。

于 2012-06-20T00:18:31.073 回答
1
SELECT d,e,sum(f)  
FROM mytable
GROUP by d,e
HAVING sum(f) > 0

或者...

如果该值为 0,则在引发异常的触发器中放置一些逻辑。

于 2012-06-20T00:18:49.700 回答