SqlServer2005 查询 第五讲 top
今天我们来说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的更多相关文章
- SQL分页查询,纯Top方式和row_number()解析函数的使用及区别
听同事分享几种数据库的分页查询,自己感觉,还是需要整理一下MS SqlSever的分页查询的. Sql Sever 2005之前版本: select top 页大小 * from 表名 where i ...
- 查询分页-----强势top
查询分页:语句1性能提升10倍多,仅仅是由于多了个topkeyword,非常不理解啊!!!! 1.查询时间1s内,r_object_id主键 select top 100 * from ( sele ...
- elasticsearch 分页查询实现方案——Top K+归并排序
elasticsearch 分页查询实现方案 1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10,注意:size的大小不能超 ...
- SqlServer2005 查询 第四讲 in
今天我们来说sql中的命令参数in in --in用于查询某个字段的指定的值的记录信息 注意一下:--对或(or)取反是并且(and),对并且(and)取反是或(or 数据库中不等于表示有两种:!= ...
- SqlServer2005 查询 第三讲 between
在数据库的查询中最重要的是要知道命令的顺序,因为在sql命令中有许多的参数,例如distinct,top,in,order by,group by.......如果你不能理解什么时候该执行什么的话,很 ...
- SqlServer2005 查询 第一讲 计算列
数据库查询[最重要且在数据库中难度最大] 声明一下我这里用的数据库样例是郝斌老师的(scott库) 我尽最大努力把复杂的问题简单化,方便理解,希望我写的东西能够帮助到你们 有些复杂的东西我我用自己的方 ...
- Oracle 查询类似 select top 的用法
--查询前10条数据select * from MID_EHR_STAFF where rownum<10;--查询第5~10条的记录,minus(减)select * from MID_EHR ...
- SqlServer2005 查询 第七讲 order by
今天我们来讲sql命令中的参数order by的用法 order by order by:可以理解成[以某个字段排序] order by a,b // a和b都按升序 order by a,b des ...
- SqlServer2005 查询 第二讲 distinct
今天我们来说distinct关键字的用法. distinct - distinct:我们可以这样理解成[过滤重复值] - select distinct deptno from emp // -- 首 ...
随机推荐
- python selenium下拉框定位
一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...
- 渗透测试-基于白名单执行payload--zipfldr.dll
0x01 zipfldr.dll简介: zipfldr.dll自Windows xp开始自带的zip文件压缩/解压工具组件. 说明:zipfldr.dll所在路径已被系统添加PATH环境变量中,因此, ...
- 权限维持-wmi事件
0x01 前言 WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持. 在2015年的b ...
- Echart:前端很好的数据图表展现工具+demo
官网: http://echarts.baidu.com/index.html 通过一个简单的小Demo介绍echart的使用:demo均亲测可以运行 demo1: 1.新建一个echarts.ht ...
- Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24
作者 | 木苏.进超.冬岛.元毅.心水.衷源 业界要闻 1.云原生编程语言 Pulumi 1.0 pulumi ,一款中立的开源云开发平台,Pulumi 支持多语言.混合云环境.完全可扩展.初期支持 ...
- MyBatis 概念
简介 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyB ...
- js检测页面上一个元素是否已经滚动到了屏幕的可视区域内
应用场景:只要页面加载了,其中在页面中出现的li就向控制台输出第几个发送请求:在本次加载的页面中,再将滚动条滚回前边的li,不再向控制台输出东西,也就是说已经显示过的li,不再向控制台输出东西. &l ...
- LeetCode 十月份题目汇总
开源地址:点击该链接 前言 十月份共有60道题目,全部属于 Easy 难度的,所以公众号中分享出来的并不多,只是挑了一些感觉还可以的才分享了出来,这60道题目我按照不同类别进行了分类整理,所有源码以及 ...
- spring boot 整合JPA多数据源
上个文章介绍了spring boot在使用Mybatis持久化技术的时候如何使用多数据源,今天再补充一个使用spring data jpa实现多数据源的使用情况,JPA是一套数据库持久化规范,或者称之 ...
- git出现Your branch and 'origin/master' have diverged解决方法
如果不需要保留本地的修改,只要执行下面两步:git fetch origingit reset --hard origin/master 当我们在本地提交到远程仓库的时候,如果遇到上述问题,我们可以首 ...