sql—如何在java中对另一个select查询的结果集执行select查询

cpjpxq1n  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(373)

这是我试图对 resultSet 我第一次冗长的询问。我需要把数据上传到某个地方。
这样做对吗?
或者除了再次查询数据库之外,还有更好的方法吗?

public String createQuery() throws SQLException {
     StringBuilder Query = new StringBuilder();
     try {
        Query.append(" SELECT ...... ")
       } catch (Exception e) {
        e.printStackTrace();
    }
    return Query.toString();
}
 private void openPreparedStatements() throws SQLException {
    myQuery = createQuery();      
    try {
        QueryStatement = dbConnection.prepareStatement(myQuery);
    } catch (SQLException e) {
        e.printStackTrace();
        return;
    }
}
public ResultSet selectData(String timestamp) throws SQLException {
    openConnection();
    ResultSet result = null;
    ResultSet rs_new=null;
    try {
        result = QueryStatement.executeQuery();
        while (result.next()) {
           String query = "SELECT * FROM " + result + " WHERE " + "ID" + " =" + "ABC";
            rs_new =QueryStatementNew.executeQuery(query);
            System.out.print(rs_new);
        }
    } catch (SQLException e) {
        LOGGER.info("Exception", e);
    }

    return result;
}
bmp9r5qi

bmp9r5qi1#

不用运行两个单独的查询(当您不需要中间查询时),您可以将它们组合起来。
例如,您可以执行以下操作:

SELECT *
FROM (
  -- first query here
) x
WHERE ID = 'ABC'
hwazgwia

hwazgwia2#

不能在一个数据库连接中使用两个语句对象。因此,您可以打开另一个数据库连接并在第二个连接中执行第二条语句,或者从第一条语句遍历resultset并存储所需的值(例如,在数组/集合中),然后关闭该语句并运行第二条语句,这次从保存它们的数组/集合中检索值。请参阅java从resultset生成查询并执行新查询

flseospp

flseospp3#

如果您有能力使用中间结果集,并且应用程序使用相同的数据库连接会话,请让db2将中间结果集保存在全局临时表中。

DECLARE GLOBAL TEMPORARY TABLE SESSION.TMP_RES AS 
(
SELECT ID, ... -- Your first lengthy query text goes here
) WITH DATA WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED;

您可以发送后续测试的结果 SELECT ... FROM SESSION.TMP_RES 到ftp,以及 SELECT * FROM SESSION.TMP_RES WHERE ID = 'ABC' 有弹性。

相关问题