如何防止插入时的sum(f)= 0?
INSERT INTO `t_1` (a,b,c)
SELECT d,e,sum(f)
GROUP by d,e
我尝试将条件WHERE sum(f)>0
添加到查询结尾。但它以错误结束。
答案 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
WHERE
和HAVING
子句之间的区别在于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,则抛出异常。