0

我想编写一个 sql 查询,如果特定列的总和为零,则将检索结果。我试过如下:(我只写了检查部分,因为错误只针对这部分)。

query=.... WHERE SUM(column1)='0'

coumn1 具有整数数据类型。我收到以下错误:

java.sql.SQLException: Invalid use of group function
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)

非常感谢任何帮助。谢谢。

4

2 回答 2

3

你的查询是错误的。如果要使用having聚合函数(如sum().

HAVING 子句被添加到 SQL 中,因为 WHERE 关键字不能与聚合函数一起使用。

查看SELECT 的 MySql 文档

WHERE 子句(如果给定)指示行必须满足才能被选择的一个或多个条件。where_condition 是一个表达式,对于要选择的每一行计算结果为真。如果没有 WHERE 子句,该语句将选择所有行。

在 WHERE 表达式中,您可以使用 MySQL 支持的任何函数和运算符,聚合(汇总)函数除外。

于 2013-07-28T07:51:01.577 回答
1

HAVING子句在SELECT 语句中用于为一组行或聚合指定过滤条件。

MySQL HAVING 子句通常与 GROUP BY 子句一起使用。与 GROUP BY 子句一起使用时,您可以将筛选条件应用于出现在 GROUP BY 子句中的列。如果省略 GROUP BY 子句,则 MySQL HAVING 子句的行为类似于 WHERE 子句。请注意,MySQL HAVING 子句将条件应用于每组行,而 WHERE 子句将条件应用于每个单独的行。

在您的查询中使用HAVING聚合函数:

query=.... HAVING SUM(column1)='0';
于 2013-07-28T08:13:27.260 回答