如何在SQL Server中实现 Limit m,n 的功能
在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录,例如:
代码如下:
select * from tablename limit m, n
但是,在SQL Server中,不支持 Limit 语句。怎么办呢?
解决方案:
虽然SQL Server不支持 Limit ,但是它支持 TOP。
我们以SQL Server 2005为例,就以它自带的示范数据库 AdventureWorks 作为测试数据:
代码如下:
select id from tablename
如果要查询上述结果中前6条记录,则相应的SQL语句是:
代码如下:
select top 6 id from tablename
如果要查询上述结果中第 7 条到第 9 条记录,则相应的SQL语句是:
代码如下:
select top 3 id from tablename
where id not in (
select top 6 id from tablename
)
select top (n-m+1) id from tablename
where id not in (
select top m-1 id from tablename
)
select top @pageSize id from tablename
where id not in (
select top @offset id from tablename
)
相关推荐
-
如何在SQL Server中实现 Limit m,n 的功能
在MySQL中,可以用 Limit 来查询第 m 列到第 n 列的记录,例如: 复制代码 代码如下: select * from tablename limit m, n 但是,在SQL Server中,不支持 Limit 语句.怎么办呢?解决方案:虽然SQL Server不支持 Limit ,但是它支持 TOP.我们以SQL Server 2005为例,就以它自带的示范数据库 AdventureWorks 作为测试数据: 复制代码 代码如下: select id from tablename
-
如何在 SQL SERVER 中快速有条件删除海量数据
最近有个朋友问我,他说他在SQLSERVER删除几百万到几千万数据是显的很慢,帮他分析了一下,提了一些以下意见,或许对很多人有用. 如果你的硬盘空间小,并且不想设置数据库的日志为最小(因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用turncate table1,因为truncate 是DDL操作,不产生rollback,不写日志速度快一些,然后如果有自增的话,恢复到1开始,而delete会产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的
-
如何在SQL Server中使用随机记录集
今天的文章,我想给你简单介绍下SQL Server里如何随机记录集. SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENTIFIER数据类型列,SQL Server会在那列上进行物理排序操作. 但是在记录集里列本身没有返回,因为ORDER BY子句在查询SELECT部分逻辑后发生,因此也不会改变记录集. 在SQL Server里,简单但很强大的方法用来随机化你的记录集. 以上所述就是本文的全部内容,希望大家可以喜欢.
-
在SQL Server中使用 Try Catch 处理异常的示例详解
目录 如何在 SQL Server 中使用 Try Catch 处理错误? 示例:了解 SQL Server 中的 Try-Catch 实现. 在 SQL Server 中使用 try-catch 的示例 如何在 SQL Server 中使用 Try Catch 处理错误? 从 SQL Server 2005 开始,我们在TRY 和 CATCH块的帮助下提供了结构错误处理机制.使用TRY-CATCH的语法如下所示. BEGIN TRY --这里写可能导致错误的语句 END TRY BEGIN C
-
SQL Server 中 RAISERROR 的用法详细介绍
SQL Server 中 RAISERROR 的用法 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ] 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] 简要说明一下: 第一个参数:{ msg_id | ms
-
如何在SQL Server 2008下轻松调试T-SQL语句和存储过程
今天突然有同事问起,如何在sqlserver中调试存储过程(我们公司使用的是sqlserver 2008 R2),猛地一看,和以前使用sqlserver 2000真的有很大的不同,我真晕了. 于是琢磨了一下.SQLSERVER 2005中不知因何去掉了很重要的DEBUGGER功能,要调试,必须要安装VS2005专业版或者更高版本.非常不方便. 还好,SQLSERVER 2008中这个很重要而且方便的功能又回来了. 不过,SQLSERVER 2008的调试功能和SQL2000的方法差别很大.SQL
-
关于SQL Server中bit类型字段增删查改的一些事
前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而不是Update的2 当别人问起我来的时候,本人当时也是处于懵逼状态的,后面联想具体的业务突然想起来这个字段是bit类型的 如果把这个现象跟BIT类型字段连续起来就不觉得奇怪了. 废话不多,直接上代码看结果就好了. 先建一个测试表 CREATE TABLE TestBIT ( Id INT IDENTITY(
-
SQL Server中利用正则表达式替换字符串的方法
建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR
-
SQL Server中的执行引擎入门 图解
本文旨在分类讲述执行计划中每一种操作的相关信息. 数据访问操作 首先最基本的操作就是访问数据.这既可以通过直接访问表,也可以通过访问索引来进行.表内数据的组织方式分为堆(Heap)和B树,其中表中没有建立聚集索引时数据是通过堆进行组织的,这个是无序的,表中建立聚集索引后和非聚集索引的数据都是以B树方式进行组织,这种方式数据是有序存储的.通常来说,非聚集索引仅仅包含整个表的部分列,对于过滤索引,还仅仅包含部分行. 除去数据的组织方式不同外,访问数据也分为两种方式,扫描(Scan)和查找(Seek)
-
Sql Server中Substring函数的用法实例解析
SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef'
随机推荐
- VMware虚拟机安装的CentOS无法上网的解决方法
- Office文档在线编辑的一个实现方法
- 拉动滚动条加载数据的jquery代码
- 用JS做的简单的可折叠的两级树形菜单
- Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
- 批处理中的echo命令图文详解
- C#实现简单的loading提示控件实例代码
- ORACLE随机数DBMS_RANDOM包
- javascript实现拖动元素交换位置
- 加密web.config的方法分享
- 关于IE中getElementsByClassName不能用的问题解决方法
- Android RecyclerView的Item自定义动画及DefaultItemAnimator源码分析
- 使用JSON.parse将json字符串转换成json对象的时候会出错
- jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
- d3.js入门教程之数据绑定详解
- 教你玩转Win XP注册表之性能优化
- Android拍照和获取相册图片
- 利用C语言实现HashTable
- 基于tomcat的连接数与线程池详解
- Git忽略提交的3种方法及Git忽略规则