Oracle数据库查询中返回指定的行数例如31到40,主键ID,但不连续,请问这样的语句如何写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库查询中返回指定的行数例如31到40,主键ID,但不连续,请问这样的语句如何写?相关的知识,希望对你有一定的参考价值。

Oracle数据库没有top关键字,这个怎么实现啊

oracle分页:

select * from (
    select t.*,rownum from (
        select * from table1 where condition order by column) t )
    where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5

参考技术A 使用rownum 多层嵌套追问

语句怎么写呢

追答

我又不知道你的表字段,怎么写啊

参考技术B 用rownum来取31到40行

查询在 JDBC 中使用时返回的行数少于 SQL 开发人员

【中文标题】查询在 JDBC 中使用时返回的行数少于 SQL 开发人员【英文标题】:Query returns less rows when used in JDBC then SQL developer 【发布时间】:2015-12-22 09:04:17 【问题描述】:

我正在使用 JDBC 使用 prepareStatement 和 executeQuery 连接到 oracle 数据库。但是当我在 SQL 开发人员的数据库上使用相同的查询时,我发现通过 JDBC 返回的行数比实际少得多。

这可能是由于连接问题或查询或语句造成的吗?谁能帮帮我。

这是我在 SQL developer 中运行的查询-

select count(*) 
from xxx 
where (TIME_STAMP between 
           TO_TIMESTAMP('2015-12-22 09:45:37.0','YYYY-MM-DD HH24:MI:SS.ff') 
           and TO_TIMESTAMP('2015-12-22 09:55:37.0','YYYY-MM-DD HH24:MI:SS.ff')) 
AND (customerid not like '[null]') 
AND (applicationid not like '[null]') 
and (status not like '-');

编辑:我在 while(resultSet.next()) 中使用了一个变量计数器来计算返回的行数,从那里我知道返回的行数是不同的。这是下面的 JDBC 代码-

 String query = "select * from xxx where 
 (TIME_STAMP between TO_TIMESTAMP('2015-12-22 09:45:37.0','YYYY-MM-DD HH24:MI:SS.ff') and 
 TO_TIMESTAMP('2015-12-22 09:55:37.0','YYYY-MM-DD HH24:MI:SS.ff')) 
 AND (customerid not like '[null]') 
 AND (applicationid not like '[null]') 
 and (status not like '-')";
        stmt = con.prepareStatement(query);
        rs = stmt.executeQuery(query);
        while (rs.next()) 
 counter++; 

【问题讨论】:

select count(*) 您的查询将始终仅返回 1 行,即仅返回计数。多行的问题在哪里? 这是我在 SQL 开发人员中用来检查行数的查询。在 JDBC 中,我在 while(resultSet.next()) 中使用了一个变量来检查返回了多少行 请发布您在 SQL 开发人员(完整语句)和通过 JDBC(完整 prepareStatement()executeQuery() 调用)中运行的 exact 查询。因为就目前而言,答案是:您没有运行相同的查询。 @LalitKumarB 我已经编辑了完整的细节 @Jaydeep 当您在 JDBC 代码中也使用 count(*) 时会发生什么? 【参考方案1】:

首先,请确保您连接到同一个数据库。 (如果您有可能用于测试的其他人等等)

然后,查看您的查询,最可疑的点似乎是日期转换。您可以分析两个不同的结果集并检查您输入的日期时间段是否与结果匹配。如果其中之一在日期值方面包含意外结果,则问题可能与您的 Java 虚拟机或 Oracle 服务器的默认时区有关。

【讨论】:

以上是关于Oracle数据库查询中返回指定的行数例如31到40,主键ID,但不连续,请问这样的语句如何写?的主要内容,如果未能解决你的问题,请参考以下文章

需要 ORA-01422 的解决方案:精确提取返回的行数超过请求的行数

Oracle SQL 选择不同的查询以返回特定的行数

如何限制查询中返回的组数,而不是 Oracle 中的行数

如何用SQL语句求oracle 数据库所有表的行数?

查询在 JDBC 中使用时返回的行数少于 SQL 开发人员

为啥选择单个属性返回的行数少于选择 Oracle SQL 中的所有列