记一个常见的ms sql server中取第N条记录的方法

时间:2022-10-01 16:11:59

前言

好好学习,天天向上。

正文

好像也是一个不难的问题,刚视频里看到的,就记一下吧。

下面是表中原始的数据结构,做了一个倒叙排序:

select * from Employee order by Salary desc

记一个常见的ms sql server中取第N条记录的方法

首先来看一下如何取Salary第二的记录。

--获取salary排行第二的人的信息
select top 1 * from Employee where Salary < (select max(salary) from Employee ) order by Salary desc

记一个常见的ms sql server中取第N条记录的方法

原理是先获取到最大的salary-maxSalary,然后根据salary降序排序,取第一条salary小于该maxSalary的记录.

下面来看一下如何取Salary第三的记录

--获取salary排行第三的人的信息
select top 1 * from (
select top 3 * from Employee order by Salary desc
) as result
order by Salary asc

原理是先根据Salary降序排序获取到前3条记录,作为Result一个结果集

记一个常见的ms sql server中取第N条记录的方法

然后再在这个结果集里面用Salary升序排序,取第一条。

记一个常见的ms sql server中取第N条记录的方法

下面再来看一下使用ROW_NUMBER(顺道试验了RankDense_Rank这两个函数)这个函数的写法:

--获取salary排行第三的人的信息
select * from (
select * ,row_number () over (order by salary desc) as RowNumber,RANK() over (order by salary desc) as RankNumber,DENSE_RANK() over (order by salary desc) as DenseRankNumber from Employee
) as Result
where Result.RowNumber =3

先看一下Result这个函数的结果集:

记一个常见的ms sql server中取第N条记录的方法

注意一下B和C的salary是一样的,但是得到的3个number值是不同的,项目中看具体情况,选择需要的函数。

我们这里取RowNumber.

记一个常见的ms sql server中取第N条记录的方法

结果也是一样的。

就到这里吧。

记一个常见的ms sql server中取第N条记录的方法的更多相关文章

  1. MS SQL Server中数据表、视图、函数&sol;方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  2. MS SQL SERVER 中的系统表

    MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.   2 syscomments 包含每 ...

  3. sql server中取交集、差集和并集的语法

    这里简单总结下在SQL Server中取交集.差集和并集的语法. 交集:INTERSECT(适用于两个结果集) SELECT ID, NAME FROM YANGGB1 INTERSECT SELEC ...

  4. 【SQL Server】MS SQL Server中的CONVERT日期格式化大全

    CONVERT 函数将某种数据类型的表达式显式转换为另一种数据类型.SQL Server中 将日期格式化. SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式. 在表中,左侧的两列表示将 ...

  5. &lpar;转&rpar; SQL Server中 ldf 文件过大的解决方法

    原文地址:http://blog.itpub.net/35489/viewspace-616459/ 在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下 ...

  6. SQL Server中 ldf 文件过大的解决方法

    在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为"自动收缩"外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:  - 第一步:清空日志  ...

  7. SQL Server 中关于EXCEPT和INTERSECT的使用方法

    熟练使用SQL Server中的各种使用方法会给查询带来非常多方便.今天就介绍一下EXCEPT和INTERSECT.注意此语法仅在SQL Server 2005及以上版本号支持. EXCEPT是指在第 ...

  8. MS Sql Server 中主从库的配置和使用介绍&lpar;转&rpar;

    网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库. 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据 ...

  9. MS SQL Server中的CONVERT日期格式化大全

    CONVERT 将某种数据类型的表达式显式转换为另一种数据类型.由于某些需求经常用到取日期格式的不同. 现以下可在SQL Server中将日期格式化. SQL Server 支持使用科威特算法的阿拉伯 ...

随机推荐

  1. C&num;扩展方法知多少

    前言:上篇 序列化效率比拼——谁是最后的赢家Newtonsoft.Json 介绍了下序列化方面的知识.看过Demo的朋友可能注意到了里面就用到过泛型的扩展方法,本篇打算总结下C#扩展方法的用法.博主打 ...

  2. WSDL项目---添加头信息和附件

    用于底层协议的SOAP请求是HTTP,可以添加两个自定义HTTP头(例如用于身份验证或会话)和附件. 让我们看一下这两个. 1. 自定义HTTP标头 直接添加自定义HTTP头: 我们已经添加了自定义内 ...

  3. Android Studio导入github下载的工程

    现在从github上面现在的项目大部分都是Android Studio工程,那么问题来了,从github上面down一个工程下来,怎么导入android studio呢? 对刚从eclipse转And ...

  4. Linux From Scratch &lbrack;2&rsqb;

    1. gcc需要的一些lib GMP:A free library for arbitrary precision arithmetic, operating on signed integers, ...

  5. SqlServer中decimal&lpar;numeric &rpar;、float 和 real 数据类型的区别&lbrack;转&rsqb;

    decimal(numeric )             同义,用于精确存储数值 float 和 real                      不能精确存储数值   decimal 数据类型最 ...

  6. prototype vs &lowbar;&lowbar;proto&lowbar;&lowbar; 之间关系

    __proto__ is the actual object that is used in the lookup chain to resolve methods, etc. __proto__是解 ...

  7. php基础知识(每天分享一些以前的笔记希望能帮助自学的朋友)

    php基础(第一天) php标签 1.  要知道php是一种嵌入html文档的脚本语言:php语法格式是:<?php 想要写的内容 ?>红色体就是php的标签,注意这些标签都要在英式输入法 ...

  8. 二分图最大匹配:匈牙利算法的python实现

    二分图匹配是很常见的算法问题,一般用匈牙利算法解决二分图最大匹配问题,但是目前网上绝大多数都是C/C++实现版本,没有python版本,于是就用python实现了一下深度优先的匈牙利算法,本文使用的是 ...

  9. Java进阶篇设计模式之六 ----- 组合模式和过滤器模式

    前言 在上一篇中我们学习了结构型模式的外观模式和装饰器模式.本篇则来学习下组合模式和过滤器模式. 组合模式 简介 组合模式是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来 ...

  10. P1279 字串距离 dp 洛谷

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...