今天我们来说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

SqlServer2005 查询 第五讲 top的更多相关文章

  1. SQL分页查询,纯Top方式和row_number()解析函数的使用及区别

    听同事分享几种数据库的分页查询,自己感觉,还是需要整理一下MS SqlSever的分页查询的. Sql Sever 2005之前版本: select top 页大小 * from 表名 where i ...

  2. 查询分页-----强势top

    查询分页:语句1性能提升10倍多,仅仅是由于多了个topkeyword,非常不理解啊!!!! 1.查询时间1s内,r_object_id主键 select top 100 * from (  sele ...

  3. elasticsearch 分页查询实现方案——Top K+归并排序

    elasticsearch 分页查询实现方案 1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10,注意:size的大小不能超 ...

  4. SqlServer2005 查询 第四讲 in

    今天我们来说sql中的命令参数in in --in用于查询某个字段的指定的值的记录信息 注意一下:--对或(or)取反是并且(and),对并且(and)取反是或(or 数据库中不等于表示有两种:!= ...

  5. SqlServer2005 查询 第三讲 between

    在数据库的查询中最重要的是要知道命令的顺序,因为在sql命令中有许多的参数,例如distinct,top,in,order by,group by.......如果你不能理解什么时候该执行什么的话,很 ...

  6. SqlServer2005 查询 第一讲 计算列

    数据库查询[最重要且在数据库中难度最大] 声明一下我这里用的数据库样例是郝斌老师的(scott库) 我尽最大努力把复杂的问题简单化,方便理解,希望我写的东西能够帮助到你们 有些复杂的东西我我用自己的方 ...

  7. Oracle 查询类似 select top 的用法

    --查询前10条数据select * from MID_EHR_STAFF where rownum<10;--查询第5~10条的记录,minus(减)select * from MID_EHR ...

  8. SqlServer2005 查询 第七讲 order by

    今天我们来讲sql命令中的参数order by的用法 order by order by:可以理解成[以某个字段排序] order by a,b // a和b都按升序 order by a,b des ...

  9. SqlServer2005 查询 第二讲 distinct

    今天我们来说distinct关键字的用法. distinct - distinct:我们可以这样理解成[过滤重复值] - select distinct deptno from emp // -- 首 ...

随机推荐

  1. Redis开发与运维:数据迁移(下)

    上一篇,有朋友留言redis-port,借此机会我尝试使用一下redis-port这个同步工具 redis-port 已编译版 https://github.com/CodisLabs/redis-p ...

  2. Ubuntu 终端中文回显乱码

    参考文章 : http://wiki.ubuntu.org.cn/%E4%BF%AE%E6%94%B9locale 所用 Ubuntu的版本 : 猜想是这样的: 1.字符的编码和显示时,所处的环境不是 ...

  3. fread优化读入

    inline char nc() { static const int BS = 1 << 22; static unsigned char buf[BS],*st,*ed; if(st ...

  4. shell数组(四)

    [root@ipha-dev71- exercise_shell]# cat test.sh #!/bin/bash my_array=(a b c d) echo "第一个元素为:${my ...

  5. java-反编译工具(luyten)

    下载地址:https://github.com/deathmarine/Luyten

  6. 基于Prometheus和Grafana的监控平台 - 运维告警

    通过前面几篇文章我们搭建好了监控环境并且监控了服务器.数据库.应用,运维人员可以实时了解当前被监控对象的运行情况,但是他们不可能时时坐在电脑边上盯着DashBoard,这就需要一个告警功能,当服务器或 ...

  7. Spring Boot 配置 - 配置信息加密

    ▶ Spring Boot 依赖与配置 Maven 依赖 <dependency> <groupId>org.springframework.boot</groupId& ...

  8. day34作业

    作业 查看岗位是teacher的员工姓名.年龄 select name,age from teacher where post='teacher'; 查看岗位是teacher且年龄大于30岁的员工姓名 ...

  9. Spring(二)装配Spring Bean

    控制反转的概念:控制反转是一种通过描述(在Java中或者是XML或者注解)并通过第三方去产生或获取特定对象的方式. 在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependenc ...

  10. django-HttpResponse,render,redirect

    1.导入相应的包 from django.shortcuts import HttpResponse, render, redirect 2.HttpResponse(返回字符串给浏览器) def i ...