我想编写一个sql查询,如果特定列的总和为零,则将检索结果。我尝试过如下:(我只编写了检查部分,因为此部分的错误即将发生。)
query=.... WHERE SUM(column1)='0'
coumn1具有整数数据类型。我收到以下错误:
java.sql.SQLException: Invalid use of group function
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
非常感谢任何帮助。感谢。
答案 0 :(得分:3)
您的查询错误。如果要使用having
等集合函数,则应使用sum()
子句。
HAVING子句已添加到SQL,因为WHERE关键字不能与聚合函数一起使用。
查看MySql documentation of SELECT:
WHERE子句(如果给定)指示要选择的行必须满足的条件。 where_condition是一个表达式,对于要选择的每一行,其计算结果为true。如果没有WHERE子句,该语句将选择所有行。
在WHERE表达式中,您可以使用MySQL支持的任何函数和运算符,但聚合(汇总)函数除外。
答案 1 :(得分:1)
SELECT语句中使用 HAVING 子句来指定行或聚合组的过滤条件。
MySQL HAVING子句通常与GROUP BY子句一起使用。与GROUP BY子句一起使用时,可以将过滤条件应用于GROUP BY子句中显示的列。如果省略GROUP BY子句,则MySQL HAVING子句的行为类似于WHERE子句。请注意,MySQL HAVING子句将条件应用于每组行,而WHERE子句将条件应用于每个行。
在查询中使用HAVING
和聚合函数:
query=.... HAVING SUM(column1)='0';