MySql计数(*)在ResultSet和WorkBench中返回不同的值

时间:2019-01-11 12:52:42

标签: java mysql jdbc resultset

我有一个查询,该查询在4个不同的表上有4个左联接。 当我在工作台中使用count()运行此查询时,它将返回2(即期望值)。通过我的代码运行时,相同的查询返回3000即count(),因为rowCount的值为3000。 这里有人遇到类似的问题吗?

调试步骤-

  1. 在调试模式下,我复制了在Preparedstatement中构造的查询,并在MySQL工作台中运行了该查询。返回2是正确的。

对我可以调试此问题的其他方式有何建议?

出于保密目的,我无法在此处粘贴查询

编辑:

int totalCount = 0;
StringBuilder queryBuilder = new StringBuilder(query.replace(QueryConstants.SELECT, QueryConstants.SELECT_COUNT));
     try(Connection connection = dataSource.getConnection();
         PreparedStatement countStatement = connection.prepareStatement(queryBuilder.toString());
         ResultSet resultSet = countStatement.executeQuery()) {
            while(resultSet.next()) {
                totalCount = resultSet.getInt(1);
            }
            pageDetailsDTO.setTotal(totalCount);

所以我要在这里实现的是,首先,我将使用LIMIT和OFFSET执行prepareStatement并获取结果集。 其次,传递与String相同的prepareStatement,我将在名为 getTotalCount(String query,PageDetailsDTO pageDetailsDTO)的方法内调用上述逻辑,以了解没有LIMIT和OFFSET返回的记录数。该总数用于分页目的。 因此,我将用 Select count()作为rowCount *替换 Select

0 个答案:

没有答案