今天我们来说sql命令中得参数top

top

  • top【 最前面若干个记录,专属于SqlServer2005的语法,不可移植到其他库。oracle中是用rownum<6来实现输出前5行记录。】

    下面我们引入一个题目来分析一下这个top参数

    请查询在scott这个库中的emp表的前三条记录
    select top 3 * from emp // --这里的top 3是指前3条记录,*是指所有字段的值
// -- 所以在执行的时候首先会找到emp表,然后开始查询表中的
//-- 第一条记录,发现符合top 3 这个参数的特质,于是就输出
//-- 这条记录的所有字段的值
//--然后开始查询第二条记录......一直这样查询下去,直到查询
//--到第四条记录的时候
//--发现不符合这个top 3这个参数的特征,于是
//--就,不进行输出了,也不在进行下一条记录的查询了

下面我们来看一下上面这一条sql命令所执行的结果



我们可以发现只输出了前emp表的前三条记录

  • top还可以和百分比的结合的来使用。

    例如
  select top 15 percent * from emp  //--这里我们可以把top 15 percent作为一个整体
//-- 表示输出emp表的前%15个记录
//-- 注意:如果表的前%15不是一个整数的话
// -- 就进位
//-- 假如emp表有14条,那么14*%15=2.1。
//-- 则就会输出前三条记录的所有字段的值
//-- 执行的顺序的话,可以参照上一条sal命令的
//注释

下面我们来看一下上面这一条sql命令所执行的结果



我们会发现,也只输出了emp表前面的三条记录

  • 注意下面这条sql命令是错误的

    select top 2 from emp //之所以这条命令是错误的,是因为当,查询到前面两条记录的时

    //侯,这条sql命令却并没有有告诉你应该查询那个字段的值

    //或者那几个字段的值,或者所有字段的值

我们再来分析一个题目

  • --把工资在1500到3000(包括1500 到3000)员工的工资最高前4个按降序输出
  select top 4 * (4)
from emp (1)
where sal between 1500 and 3000 (2)
order by sal desc(3)
//-- order by 是排序的意思,以后我会详细的说,desc是降序的意思,默认情况下是升序的意思。
//--我们来看这个命令的执行情况
//--首先会执行(1)步找到emp这个表,然后查询第一条记录
//--然后执行第(2)步where后面的语句,对原始的数据进行过滤
// --然后会执行(3)步,按照sal这个字段进行降序排序。
//--注意这个第(3)步这个sql命令不好理解,我认为,在这个sql命令的底层中应该用了某种算法。
//-- 当第一次执行到order by sal desc的时候,他应该就能遍历整个emp表然后按照sal这个字段的值降序。
//-- 然后就会执行最后的第(4)步

下面我们来看一下上面这一条sql命令所执行的结果



我们可以发现输出的是4条记录,sal这个字段的值都是在1500到3000这个范围,并且这个字段的值是降序的

今天的这一讲就到这里,下一讲我们来讲 null参数

***如果你们还有什么不懂的,可以加我qq485536603

最新文章

  1. The process could not execute &#39;sp_repldone/sp_replcounters&#39; on &#39;ServerName&#39;
  2. iReport 中使用 Chart 图
  3. [LeetCode] Remove Element (三种解法)
  4. ubuntu日志清理
  5. Java应用短信猫
  6. Android(java)学习笔记130:ProgressBar使用的
  7. 转载:关于 Token,你应该知道的十件事
  8. [Redux] Implementing Store from Scratch
  9. java中的注解总结
  10. 为SRS流媒体服务器添加HLS加密功能(附源码)
  11. Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
  12. 在JavaScript中,如何判断数组是数组?
  13. windows 下 nginx log 分割
  14. Java 必须掌握的 20+ 种 Spring 常用注解
  15. python爬虫基础_requests和bs4
  16. 部署在sae上的servlet程序出现is not a javax.servlet.Servlet 错误
  17. 填坑:Java 中的日期转换
  18. luogu P3128 [USACO15DEC]最大流Max Flow (树上差分)
  19. hbase0.94.11版本和hbase1.4.9版本的benchamark区别
  20. 【Django】 积累

热门文章

  1. unittest中diascover批量执行用例
  2. 面试官,Java8 JVM内存结构变了,永久代到元空间
  3. Java学习笔记之Object常用方法
  4. Web前端安全之iframe
  5. Linux下mqttServer搭建
  6. Bugku SQL注入2的思考
  7. JVM(3) 垃圾收集器与内存分配策略
  8. django-模板之静态文件加载(十四)
  9. laravel6.0控制器-资源控制器
  10. 对于Serializable的理解