【问题标题】:ResultSet and the SQL functionsResultSet 和 SQL 函数
【发布时间】:2013-05-14 10:11:31
【问题描述】:

我正在使用 Derby 数据库,并且想知道一些事情:ResultSet 是表吗?如果是这样,那意味着我可以调用MIN(ResultSet.someColumn)(或MAX()AVG()),对吗?或者我是否必须将ResultSet 转储到临时表才能使用所需的 SQL 函数?

【问题讨论】:

  • ResultSet 的一个实例是一个 java 对象。而 MIN() 和 MAX() 是 SQL 函数,你不能做 MIN(ResultSet.someColumn)
  • 所以,我必须将 ResultSet 包含的行写入临时表,然后使用这些函数?还是使用 while 循环来获取信息,然后从 Java 中执行 min()max()avg()
  • 为什么要写在临时表里?创建一个直接为您提供最终结果的 SQL。如果您遇到困难,请在此处发布您的 SQL
  • 你知道我已经解决了这个问题吗?查看对已接受答案的回复...
  • 是的,我阅读了答案,但没有阅读 cmets。道歉

标签: java sql derby resultset


【解决方案1】:

official documentation 开始,一个 ResultSet 是:

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

如果你想应用一些聚合函数,你将不得不修改你的 SQL 语句然后重新执行它。最后,您将获得一个 ResultSet(即使它可能包含单行)。

【讨论】:

  • 所以也许从SELECT * FROM IntegerModeData WHERE Difficulty=5SELECT MIN(Completion_Time) FROM (SELECT * FROM IntegerModeData WHERE Difficulty=5),当使用Statement.executeQuery() 的String 参数时,它将返回只有一行和一列的ResultSet!这将为我完成我所有的工作!他妈的天才!!
  • 可惜,它不适用于 Derby。它抱怨在命令字符串的最后一个字符上遇到了 EOF。 :(
  • 等一下。我缺少五个字符:“AS CS”。我什至不知道它到底意味着什么,但我认为它是 Derby 网站上某个地方的一个工作示例....
  • SQL“AS”关键字允许您为查询的中间结果命名。您可以命名中间表和列,这有助于您在外部查询中引用它们。
猜你喜欢
  • 2012-09-21
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
相关资源
最近更新 更多