FETCH 子句在 Oracle 中可以用来限制查询返回的行数,本教程将教大家如何使用 FETCH 子句。
以下说明了行限制子句的语法:
[ OFFSET offset ROWS]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]
OFFSET 子句指定在行限制开始之前要跳过行数。OFFSET 子句是可选的。 如果跳过它,则偏移量为 0,行限制从第一行开始计算。
偏移量必须是一个数字或一个表达式,其值为一个数字。偏移量遵守以下规则:
FETCH 子句指定要返回的行数或百分比。
为了语义清晰的目的,您可以使用关键字 ROW 而不是 ROWS,FIRST 而不是 NEXT。 例如,以下子句的行为和产生的结果相同:
FETCH NEXT 1 ROWS
FETCH FIRST 1 ROW
仅返回 FETCH NEXT (或 FIRST) 后的行数或行数的百分比。
WITH TIES 返回与最后一行相同的排序键。请注意,如果使用 WITH TIES,则必须在查询中指定一个 ORDER BY 子句。如果不这样做,查询将不会返回额外的行。
以下语句返回库存量最高的前 5 个产品:
-- 以下查询语句仅能在Oracle 12c以上版本执行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH NEXT 5 ROWS ONLY;
得到结果如下
以下查询使用 WITH TIES 选项的行限制子句:
-- 以下查询语句仅能在Oracle 12c以上版本执行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH NEXT 10 ROWS WITH TIES;
即使查询请求了 10 行数据,因为它具有 WITH TIES 选项,查询还返回了另外两行。
请注意,这两个附加行在 quantity 列的值与第 10 行 quantity 列的值相同。
以下查询返回库存量最高的前 1% 的产品:
-- 以下查询语句仅能在Oracle 12c以上版本执行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH FIRST 1 PERCENT ROWS ONLY;
SQL
执行上面示例查询语句,得到以下结果 :
库存 (inventories) 表总共有 1112 行,因此,1112 中的 1% 是 11.1,所以提取 12 (行)。
以下查询将跳过库存量最高的前 10 个产品,并返回接下来的 10 个产品:
-- 以下查询语句仅能在Oracle 12c以上版本执行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
得到以下结果 –
SQL
注意:这个功能可以用于分页的实现
在Oracle中,Initcap()函数可以将每个单词中的第一个字符设置为大写,其余的设置为小写。下面就是Initcap()函数的语法及具体用法...
MySQL Date 函数定义和用法 DATE_ADD() 函数向日期添加指定的时间间隔。 语法DATE_ADD(date,INTERVAL expr type) date 参数是合...
遇到锁表快速解决办法依次执行1-6步,运行第6步生成的语句即可。如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可。第...
在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 RE...
在本章中,我们将研究如何在WordPress中编辑用户。以下是在WordPress中编辑用户的简单步骤。步骤(1)- 点击Users → All Users。...
在本章中,我们将学习如何更新WordPress中的版本。 在这里,我们将通过管理面板将WordPress升级到最新版本。以下是更新WordPress...
由于分页对象预定义的样式比较有限,有的时候我们想自定义分页的样式或者标签,由于分页对象的的所有属性和方法都是公开的,这便...
代码分层的意义在于将程序逻辑进一步解耦,将层级之间的数据流和依赖关系设计为单向链路,使得系统架构更加灵活易扩展。一、基本...