【发布时间】:2019-04-05 18:39:34
【问题描述】:
查询:
SELECT MAX(A.column2) FROM abcd A where A.column1= ? AND A.column3= 1
代码:
resultSet = statement.executeQuery();
if (resultSet.next()) {
return resultSet.getInt(1);
}
当我执行这个 sql 查询 "resultSet.next()" 总是给出结果 "true" 即使没有返回行并且 resultSet.getInt(1) 给出 "0" ,如果没有返回行。我的问题是为什么 resultSet.next() 总是 true ? ...如果表中没有返回任何行,我想返回 -1 如何使用结果集来做到这一点?
【问题讨论】:
-
不要使用像
MAX这样的聚合函数。此外,resultSet.wasNull()是检查原始操作是否返回null的唯一方法。 -
MySQL 文档指出,如果没有找到匹配的行,
MAX将返回NULL,因此这仍可能算作ResultSet中的一行。 -
String query = "SELECT COALESCE(MAX(A.column2), -1) FROM abcd A where A.column1= ? AND A.column3= 1";怎么样 -
添加“COALESCE”后,我可以从查询中返回-1。谢谢先生