有没有一种方法可以使Oracle查询的行为类似于包含MySQLlimit子句的行为?
在MySQL中,我可以这样做:
select *
from sometable
order by name
limit 20,10
以获得第21到30行(跳过前20行,给出下10行)。这些行是在后面选择的order by
,因此它实际上按字母顺序从第20个名称开始。
在Oracle中,人们唯一提到的是rownum伪列,但是它在之前 被评估order by
,这意味着:
select *
from sometable
where rownum <= 10
order by name
将返回一个随机的十行,按名称排序,这通常不是我想要的。它还不允许指定偏移量。
从Oracle 12C R1(12.1)开始,那里是一个行限制性条款。它不使用熟悉的LIMIT
语法,但是可以通过更多选项更好地完成这项工作。您可以在此处找到完整的语法。(还可以在此答案中阅读有关Oracle内部如何工作的更多信息)。
要回答原始问题,以下是查询:
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
设置
CREATE TABLE rownum_order_test (
val NUMBER
);
INSERT ALL
INTO rownum_order_test
SELECT level
FROM dual
CONNECT BY level <= 10;
COMMIT;
table上有什么?
SELECT val
FROM rownum_order_test
ORDER BY val;
VAL
----------
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
20 rows selected.
获取第一N行
SELECT val
FROM rownum_order_test
ORDER BY val DESC
FETCH FIRST 5 ROWS ONLY;
VAL
----------
10
10
9
9
8
5 rows selected.
获得第一N
行中,如果N
日行有关系,让所有的束缚行
SELECT val
FROM rownum_order_test
ORDER BY val DESC
FETCH FIRST 5 ROWS WITH TIES;
VAL
----------
10
10
9
9
8
8
6 rows selected.
x
行的前%
SELECT val
FROM rownum_order_test
ORDER BY val
FETCH FIRST 20 PERCENT ROWS ONLY;
VAL
----------
1
1
2
2
4 rows selected.
使用偏移量,对分页非常有用
SELECT val
FROM rownum_order_test
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;
VAL
----------
3
3
4
4
4 rows selected.
您可以将偏移量与百分比结合起来
SELECT val
FROM rownum_order_test
ORDER BY val
OFFSET 4 ROWS FETCH NEXT 20 PERCENT ROWS ONLY;
VAL
----------
3
3
4
4
4 rows selected.
问题内容: 我负责处理的应用程序之一是每隔x秒检查一次Oracle DB表,以查看是否有新数据要处理(其他实时应用程序正在填充该数据)。 我们新的客户业务流程迫使我们的实时性在同一时间(比如说10000)同时每天填充几次记录来填充该表。下次我的应用程序检查是否有任何要处理的内容时,遇到10 000条记录并尝试对其进行处理。 它的设计不是很好,而且扩展性还不够好。快速解决方案是限制该应用程序从Ora
问题内容: 如何计算MySQL查询返回的行数? 问题答案: 获取查询结果中的总行数… 您可以仅迭代结果并计数。您没有说使用什么语言或客户端库,但是API确实提供了mysql_num_rows函数,该函数可以告诉您结果中的行数。 例如,这在PHP中作为mysqli_num_rows函数公开。编辑问题以提及您正在使用PHP时,这是一个使用mysqli函数的简单示例: 获取符合某些条件的行数… 只需使用
我试图通过使用以下针对oracle数据库的SQL查询,将创建/修改的行恢复一小时 从文件内容中选择*行 我试图实现同样的在我们的java应用程序中使用以下hiberNate命名查询 @namedQuery(name="FileContent.findsent", query="从文件夹c中选择idc.rowmoddt 但它没有给出预期的数据。 请帮我做这个。 谢谢
问题内容: 我希望在编写以下查询时基于表’MasterScrip’的’totalTradedVolume’获取前10个结果: 我得到以下异常: 我的jpa查询有问题。有人可以纠正我吗? 问题答案: 在JPA中不被认可。您可以改用以下方法:
问题内容: 我从查询中返回了要按最佳匹配顺序进行排序的结果列表。我会尽我所能地保持清晰,但是如果某些事情还不够清晰,请告诉我,我将尝试使其更加清晰。 用户已经输入了名为的设置列表。有了这些,我正在寻找产品。一切顺利,直到他应该挑选出最佳比赛。 有几个字段,例如。 我要订购。例如,他需要先订购带有的产品,然后再订购。您可以使用来做到这一点,但是我希望不安静匹配的结果也只显示在列表的底部。因此,基本上