我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询
Posted
技术标签:
【中文标题】我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询【英文标题】:I want to execute another SQL query on the ResultSet from the previous query using JDBC in Java Eclipse 【发布时间】:2013-10-16 14:31:09 【问题描述】:我有一个刚刚在课堂上分配的 JDBC 项目,我们应该通过 JDBC Java Eclipse 对我们的大学数据库执行此查询:
SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;
并使用返回的 resultSet 查询结果集:
HAVING COUNT = (SELECT MAX(ACOUNT) AS MAXCOUNT
FROM (SELECT dept_name, COUNT(*) AS ACOUNT
FROM student GROUP BY dept_name) AS ATable);
我在我的书中和通过 google 到处查看,但找不到有关如何执行此操作的示例的教程。你们可以指出我的任何链接/文档或起点吗?
解决方案编辑: 我终于得到了老师的澄清,他的意思是在我的 java 程序中执行 SQL 语句并循环遍历结果并使用 java 并筛选出第二个 SQL 语句将获取的相同信息,如果它附加到原始语句。 感谢那些花时间尝试和帮助的人。
【问题讨论】:
你不能对返回的ResultSet
执行查询,你最好解释你想要达到的目标,而不是你认为你应该怎么做(你有没有想过你可以只需在数据库上执行第二个查询)。
很确定你不能用 HAVING 这个词开始查询。它与 GROUP BY 结合使用。
"您的工作是通过 JDBC Java Eclipse 执行第一条 SQL 语句,生成结果集,并使用它在第一条查询语句生成的结果集上执行第二条 SQL 语句。"是我作业的准确报价
@NickJ 我也觉得这看起来很奇怪,但它再次增加了我的失落感。我给他发了一封电子邮件,但他要到明天才能再次来到他的办公室,我只是想我试着在这里口头处理并获得一些反馈。
您需要向您的导师寻求说明。您不能使用 SQL 查询 ResultSet。
【参考方案1】:
你的作业只提供了伪代码,“执行”这个词一定是错误的。正如其他人所建议的那样,“对结果集执行查询”是没有意义的。
假设您的导师的意思是“过滤掉”,您可能需要运行两个单独的语句(SELECT dept_name...
和 SELECT MAX(...
),然后遍历第一个结果集以搜索与第二个结果集匹配的结果。
伪代码:
RSet1 = query("SELECT dept_name, COUNT(*) AS COUNT FROM student GROUP BY dept_name;");
RSet2 = query("SELECT MAX(ACOUNT) AS MAXCOUNT ...");
RowInR2 = RSet2[0]; // first and only row
foreach RowInR1 in RSet1
if (
RowInR1.count = RowInR2.maxcount
)
return RowInR1; // this is your result
请记住,除了教育目的之外,这种方法是荒谬的。可以仅在一个查询中提取此数据(单行),而无需从 [Query 1] 提取和解析结果(此查询是您的两个查询的精确串联)。
【讨论】:
谢谢,这很有帮助。我确实相信他只是让我们出于教育目的进行此练习。向我们指出它可以在单独的查询中完成,这是代码可以多么动态的一个示例。以上是关于我想在 Java Eclipse 中使用 JDBC 对上一个查询的 ResultSet 执行另一个 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
使用clojure.java.jdbc在Clojure中使用外键约束