两个查询指定范围的记录的SQL语句(MS SQL SERVER 2005)
2011-05-13 23:05
597 查看
面试过程中遇到两次要求查询从第30到第40的记录(表中有主键ID,但主键可能不连续),想了几天没什么眉目就在MS SQL SERVER 2005的帮助文档中找了一下,还真有一种比较简单的方法(方法一)。在网上搜了一下,该方法(方法二)还要简单。早知这样,面试前就动手做一下呀!
现在将两种方法总结一下,下次就不会再不知道了。
方法一:
--查询从第30到第40的记录:方法一
--该方法相当于新建一个临时表,并添加一个用行号填充的字段。
WITH OrderedManager
AS
(
SELECT ROW_NUMBER() OVER (ORDER BY hre.EmployeeID) AS rn , * FROM HumanResources.Employee hre
)
SELECT * FROM OrderedManager
WHERE rn >= 30 AND rn <= 40 ;
方法二:
--查询从第30到第40的记录:方法二
--如果用一句来查询,就直接将两个变量写成40和29。申明成变量是为了灵活处理,若做成一存储过程将更方便。
DECLARE @nMax AS BIGINT ;
DECLARE @nMin AS BIGINT ;
SET @nMax = 40 ;
SET @nMin = 29 ;
SELECT TOP (@nMax - @nMin ) * FROM HumanResources.Employee hre
WHERE hre.EmployeeID NOT IN
(SELECT TOP (@nMin) hr.EmployeeID FROM HumanResources.Employee hr)
两个语句都是在MS SQL SERVER 2005上的AdventureWorks数据库中操作的,通过测试,可以得到需要的结果。
现在将两种方法总结一下,下次就不会再不知道了。
方法一:
--查询从第30到第40的记录:方法一
--该方法相当于新建一个临时表,并添加一个用行号填充的字段。
WITH OrderedManager
AS
(
SELECT ROW_NUMBER() OVER (ORDER BY hre.EmployeeID) AS rn , * FROM HumanResources.Employee hre
)
SELECT * FROM OrderedManager
WHERE rn >= 30 AND rn <= 40 ;
方法二:
--查询从第30到第40的记录:方法二
--如果用一句来查询,就直接将两个变量写成40和29。申明成变量是为了灵活处理,若做成一存储过程将更方便。
DECLARE @nMax AS BIGINT ;
DECLARE @nMin AS BIGINT ;
SET @nMax = 40 ;
SET @nMin = 29 ;
SELECT TOP (@nMax - @nMin ) * FROM HumanResources.Employee hre
WHERE hre.EmployeeID NOT IN
(SELECT TOP (@nMin) hr.EmployeeID FROM HumanResources.Employee hr)
两个语句都是在MS SQL SERVER 2005上的AdventureWorks数据库中操作的,通过测试,可以得到需要的结果。
相关文章推荐
- ms sql server 怎么查询指定行数的记录
- SQL中获取指定两个日期时间点或者时间段内所有记录语句
- MS SQL Server带有时间的记录怎样查询
- SQL中获取指定两个日期时间点或者时间段内所有记录语句
- 【SQL精彩语句】SQL SERVER 2005中查询指定节点及其所有子节点的方法(表格形式显示)
- 在Oracle、MySQL、MS SQL Server中查询指定数目的记录
- 如何查询数据库中ID的最新的一条记录 - MS-SQL Server / 基础类
- MS SQL Server 2005 逻辑查询处理中的各个阶段
- SQL 查询地理信息中指定距离范围内的记录
- MS SQL Server带有时间的记录怎样查询
- SQL Sserver - 奉献一条SQL2005里查询进程信息的SQL语句
- MS SQL server 2005中查询某张表从30-40条数据,但主键ID不是连续的
- SQL Server中可不可以指定某些语句不记录到日志
- 巧用DISPLAY_AWR函数与dba_hist_sqlstat结合查询SQL语句在指定节点指定时间范围内的历史执行计划
- MS SQLServer 查询数据库中表的记录数
- MS SQL Server 2005 逻辑查询处理中的各个阶段(一)
- MS SQL Server 2005 物理查询处理中的各个阶段(二)
- SQL Server中选出指定范围行的SQL语句代码
- MS SQL Server 2005 物理查询处理中的各个阶段 (二)
- MS SQL Server 2005数据导入SQL语句