MySQL - 哪里适合条件?

时间:2012-06-20 00:14:54

标签: mysql sql

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

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

我尝试将条件WHERE sum(f)>0添加到查询结尾。但它以错误结束。

4 个答案:

答案 0 :(得分:4)

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

SELECT d,e,sum(f)  
GROUP by d,e
HAVING sum(f) > 0

答案 1 :(得分: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

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

答案 2 :(得分:1)

GROUP BY之前,您可以在MySQL文档中看到select syntax,当您在前面插入'时,它应该相似或相同。

(虽然也许你的意思是'HAVING ......'而不是'WHERE')。

答案 3 :(得分:1)

SELECT d,e,sum(f)  
FROM mytable
GROUP by d,e
HAVING sum(f) > 0

... OR

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