SQL 限定返回行数
描述:
你想限定查询结果的行数。你不关心排序,任意 n
行都可以。比如一张很大的表,你只想返回10行简单看看。
方法:
使用数据库的内置功能来控制返回的行数。
DB2
使用 FETCH FIRST
子句。
select *from emp fetch first 5 rows only
MySQL 和 PostgreSQL
使用 LIMIT
子句。
select *from emp limit 5
Oracle
对于 Oracle
而言,通过在 WHERE
子句中限制 ROWNUM
的值来获得指定行数的结果集。
select *from empwhere rownum <= 5
SQL Server
使用 TOP
关键字限定返回行数。
select top 5 *from emp
扩展知识:
许多数据库提供了类似 FETCH FIRST
和 LIMIT
这样的子句来指定查询结果的行数。Oracle 与此不同,你必须使用 ROWNUM
的函数,该函数会为结果集里的每一行指定一个行号(从 1 开始,逐渐增大)。
当你使用 ROWNUM<=5
限定只返回最初的 5
行数据时,会发生如下的事情。
- Oracle 执行查询。
- Oracle 取得第一行数据,并把它的行号定为 1。
- 已经超过第 5 行了吗?如果没有,Oracle 会返回当前行,因为当前的行号满足小于或等于 5 这一条件。如果已经超过,那么 Oracle 就不返回当前行。
- Oracle 取得下一行数据,并且将行号加 1(得到 2,然后得到 3,再然后得到 4,以此类推)。
- 返回第 3 步。
如上述处理过程所示,Oracle 会在取得某一行数据之后再为其编号,这是关键之处。很多 Oracle 开发人员试图只获取一行数据,比如指定 ROWNUM=5
,希望只返回第 5 行。但是,同时使用 ROWNUM
和等式条件是不对的。以下是使用 ROWNUM=5
后实际发生的事情。
- Oracle 执行查询。
- Oracle 取得第一行数据,并把它的行号定为 1。
- 已经到第 5 行了吗?如果没有,那么 Oracle 会舍弃这一行,因为它不符合条件。如果是,那么 Oracle 会返回当前行。但是,行号永远不可能到 5 !(行号永远是1)
- Oracle 取得下一行数据,并把它的行号定为 1。这是因为查询结果的第 1 行的行号必须是 1。
- 返回第 3 步。
深入理解这一过程,你会明白为什么通过指定等式条件 ROWNUM=5
来获取第 5
行会失败。如果你不先获取第 1
行到第 4
行,第 5
行从何而来?
你可能会注意到,ROWNUM=1
确实能得到第 1
行,这似乎与上述解释相矛盾。ROWNUM=1
运行正常的原因在于,Oracle 必须至少尝试一次读取,才能确定表里是否有记录。仔细阅读以上处理过程,用 1
替换 5
,你就会理解为什么指定 ROWNUM=1
作为条件(为了返回一行)会成功。
SQL 限定返回行数相关推荐
- SQL中的排序及限制返回行数
今天要分享给大家的是SQL中对查询数据进行排序以及限制返回行数! 一.排序 在使用 SELECT 语句从表中查询数据时,不保证结果集中的行顺序. 这意味着SQL Server可以返回具有未指定行顺序的 ...
- SQL Server查询、限制返回行数
我们在日常开发中,经常涉及到分页查询.特别是和页面进行交互,分页查询已是家常便饭. 现在很多的jq插件都会有分页的模块,可以在页面上将数据更好的呈现给用户,使得用户拥有更好的体验.像我们熟悉的有很多, ...
- postgresql返回行数_怎么优化你的SQL查询?以PostgreSQL为例
实际工作中,我们每个人难免都会要写SQL,执行SQL,但是有时时候执行非常慢,甚至获得不了结果.这时候你会怎么办?放弃?去苦口婆心的求隔壁房间胡子擦擦的猥琐DBA大叔? NO,正确方法是先检查一下你的 ...
- SQL Server数据库-限制返回行数
SQL Server Select Top语句用于限制查询结果集中返回的行数或行百分比 Top 10:查询数据的前面十条数据,就不会把所有的数据查询出来,只会查出前十条数据 注:Top后面是要查询多少 ...
- SQL查询结果限制返回行数
语法实现: select col_name from table_name limit i,n 1.limit子句可以背英语强制select语句返回指定行数. 2.limit后跟一个参数或两个参数: ...
- 《Oracle 入门教程》第 07 篇 限制返回行数
文章目录 7.1 使用 FETCH 子句实现排行榜 7.2 使用 ROWNUM 实现排行榜 7.3 使用 OFFSET 子句分页查询 7.4 使用 ROWNUM 实现分页查询 Top-N 排行榜是一个 ...
- sql 左连接行数增加本质
sql 左,右,内连接 转载自:http://323229113.blog.163.com/blog/static/2185362820070172553209/ 感谢作者. 相信做数据分析的朋友,对 ...
- php mysql返回行数_PHP中mysqli_affected_rows作用行数返回值分析
本文实例分析了PHP中mysqli_affected_rows作用行数返回值.分享给大家供大家参考.具体分析如下: mysqli中关于update操作影响的行数可以有两种返回形式: 1. 返回匹配的行 ...
- SQL Server查询表行数
方式一:(表大时较慢) select count(*) as rows from table_name 方式二:(数据库里本身存的信息,速度较快) SELECT a.name, b.rows,b.in ...
最新文章
- 简述使用混合传递参数时的基本原则_JUnit 5参数化方法测试(一)
- 绝不能错过的10款最新OpenStack网络运维 监控工具
- tkinter学习-菜单与画布
- A good debug parameter - sap-ds-debug=true
- Bing Speech Recognition 标记
- 应用实时监控 ARMS 上线用户行为回溯功能
- 紧急通知!不要在MySQL中使用UTF-8编码!!!
- jQuery得事件绑定
- android java框架_【阿里P8大牛教你Android入门之路(java篇)】——Java集合框架(系列篇1)...
- Pandas index详解
- Linux是命令行吗,你真的了解Linux命令吗?
- 中国人工智能学会最高荣誉CAAI Fellow出炉,首批53位大牛,姚期智谭铁牛等入选
- 《数据结构:c语言版》(严蔚敏)知识点整合
- 交换机芯片技术知多少
- [渝粤教育] 苏州科技大学 混凝土结构设计原理 参考 资料
- java多线程 —— 面试题集合(最全集合)
- AutoCAD2000软件学习心得
- Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing
- 小程序推广的6个超简单方案
- 2021年中国光伏支架产量及主要企业经营分析[图]