描述:

你想限定查询结果的行数。你不关心排序,任意 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 限定返回行数相关推荐

  1. SQL中的排序及限制返回行数

    今天要分享给大家的是SQL中对查询数据进行排序以及限制返回行数! 一.排序 在使用 SELECT 语句从表中查询数据时,不保证结果集中的行顺序. 这意味着SQL Server可以返回具有未指定行顺序的 ...

  2. SQL Server查询、限制返回行数

    我们在日常开发中,经常涉及到分页查询.特别是和页面进行交互,分页查询已是家常便饭. 现在很多的jq插件都会有分页的模块,可以在页面上将数据更好的呈现给用户,使得用户拥有更好的体验.像我们熟悉的有很多, ...

  3. postgresql返回行数_怎么优化你的SQL查询?以PostgreSQL为例

    实际工作中,我们每个人难免都会要写SQL,执行SQL,但是有时时候执行非常慢,甚至获得不了结果.这时候你会怎么办?放弃?去苦口婆心的求隔壁房间胡子擦擦的猥琐DBA大叔? NO,正确方法是先检查一下你的 ...

  4. SQL Server数据库-限制返回行数

    SQL Server Select Top语句用于限制查询结果集中返回的行数或行百分比 Top 10:查询数据的前面十条数据,就不会把所有的数据查询出来,只会查出前十条数据 注:Top后面是要查询多少 ...

  5. SQL查询结果限制返回行数

    语法实现: select col_name from table_name limit i,n 1.limit子句可以背英语强制select语句返回指定行数. 2.limit后跟一个参数或两个参数: ...

  6. 《Oracle 入门教程》第 07 篇 限制返回行数

    文章目录 7.1 使用 FETCH 子句实现排行榜 7.2 使用 ROWNUM 实现排行榜 7.3 使用 OFFSET 子句分页查询 7.4 使用 ROWNUM 实现分页查询 Top-N 排行榜是一个 ...

  7. sql 左连接行数增加本质

    sql 左,右,内连接 转载自:http://323229113.blog.163.com/blog/static/2185362820070172553209/ 感谢作者. 相信做数据分析的朋友,对 ...

  8. php mysql返回行数_PHP中mysqli_affected_rows作用行数返回值分析

    本文实例分析了PHP中mysqli_affected_rows作用行数返回值.分享给大家供大家参考.具体分析如下: mysqli中关于update操作影响的行数可以有两种返回形式: 1. 返回匹配的行 ...

  9. SQL Server查询表行数

    方式一:(表大时较慢) select count(*) as rows from table_name 方式二:(数据库里本身存的信息,速度较快) SELECT a.name, b.rows,b.in ...

最新文章

  1. 简述使用混合传递参数时的基本原则_JUnit 5参数化方法测试(一)
  2. 绝不能错过的10款最新OpenStack网络运维 监控工具
  3. tkinter学习-菜单与画布
  4. A good debug parameter - sap-ds-debug=true
  5. Bing Speech Recognition 标记
  6. 应用实时监控 ARMS 上线用户行为回溯功能
  7. 紧急通知!不要在MySQL中使用UTF-8编码!!!
  8. jQuery得事件绑定
  9. android java框架_【阿里P8大牛教你Android入门之路(java篇)】——Java集合框架(系列篇1)...
  10. Pandas index详解
  11. Linux是命令行吗,你真的了解Linux命令吗?
  12. 中国人工智能学会最高荣誉CAAI Fellow出炉,首批53位大牛,姚期智谭铁牛等入选
  13. 《数据结构:c语言版》(严蔚敏)知识点整合
  14. 交换机芯片技术知多少
  15. [渝粤教育] 苏州科技大学 混凝土结构设计原理 参考 资料
  16. java多线程 —— 面试题集合(最全集合)
  17. AutoCAD2000软件学习心得
  18. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing
  19. 小程序推广的6个超简单方案
  20. 2021年中国光伏支架产量及主要企业经营分析[图]

热门文章

  1. COGS 613 火车站饭店
  2. threejs 特效 自定义发光围栏,发光墙体,闪烁动画
  3. Oracle 12c之Oracle 12c与云计算
  4. 群英齐聚铸辉煌!孔明在线企鹅社区成功启动!
  5. intel网卡驱动for linux ubuntu系统
  6. 【web前端开发】HTML知识点超详细总结
  7. 固态硬盘装到服务器上影响寿命吗,谈谈SSD固态硬盘的寿命问题
  8. SAP PO中如何打印预览,找到Message type以及找到驱动程序和Form输出程序
  9. Perl/Tk入门学习(上)
  10. uni-app使用ucharts地图(主要微信小程序-初步使用)