`
buliedian
  • 浏览: 1243857 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQLServer2005的Top功能

阅读更多

所有人都知道select top 的用法,但很多人还不知道update top 和 delete top 怎么用。以往的做法是set rowcount来指定,其实SQL2005中对于Top语句的增强除了参数化之外还包括对update和delete的支持,但可惜的是还不支持自定义的order by列。如果要自定义派序列可以借助CTE.对于CTE的任何更改都会影响到原始表。

我们看下面的测试代码。

set nocount on

use tempdb
go

if (object_id ('tb' ) is not null )
drop table tb
go
create table tb (id int identity (1 , 1 ), name varchar (10 ), tag int default 0 )

insert into tb (name ) select 'a'
insert into tb (name ) select 'b'
insert into tb (name ) select 'c'
insert into tb (name ) select 'd'
insert into tb (name ) select 'e'


/*--更新前两行
id name tag
----------- ---------- -----------
1 a 1
2 b 1
3 c 0
4 d 0
5 e 0
*/
update top (2 ) tb set tag = 1
select * from tb

/*--更新后两行
id name tag
----------- ---------- -----------
1 a 1
2 b 1
3 c 0
4 d 1
5 e 1

*/
;with t as
(
select top (2 ) * from tb order by id desc
)
update t set tag = 1
select * from tb

/*--删除前两行
id name tag
----------- ---------- -----------
3 c 0
4 d 1
5 e 1
*/
delete top (2 ) from tb
select * from tb

/*--删除后两行
id name tag
----------- ---------- -----------
3 c 0
*/
;with t as
(
select top (2 ) * from tb order by id desc
)
delete from t
select * from tb

set nocount off

我会在下一篇文章中介绍一个应用,就是很多人关心的如何独占查询(就是一条数据只被一个终端select到)。

如果你感兴趣的话可以自己先思考一下,我给一个提示:

SQLServer2005有一个关键字Output,它可以将更改和插入的数据输出,我们配合update top就可以模拟出来一个相对高效的独占查询的事物。此功能适合用在并行的任务处理或者消费中。

如果你想不出来,请参考后面一篇文章,如果你写出来了,那也和我写的比较一下吧:p

分享到:
评论

相关推荐

    SQL Server 2005 JDBC Driver 1.2 for unix

    例如:"jdbc:sqlserver://servername:port;databaseName=dbname;user=username;password=password"。 3. **数据库连接**:使用`java.sql.DriverManager.getConnection()`方法建立数据库连接。你需要提供之前创建的...

    SQL Server 2005 T-SQL增强

    ### SQL Server 2005 T-SQL增强 #### 富有表现力的数据类型 (Richer Data Types) 在SQL Server 2005中,T-SQL得到了显著增强,其中一个重要方面是引入了新的数据类型。这些数据类型更加丰富且灵活,能够更好地支持...

    SQL SERVER 2005 新增的几个小功能

    ### SQL Server 2005新增的小功能详解 #### 一、分页查询数据 在SQL Server 2005之前,实现分页查询通常较为复杂且效率不高。随着SQL Server 2005的发布,引入了一种更为简便的方式来实现分页查询,即通过`ROW_...

    SQL Server2005分页查询

    `ROW_NUMBER()`是SQL Server 2005引入的新功能,可以为查询结果集中的每一行赋予一个唯一的行号。在分页查询中,通常结合`TOP`或`BETWEEN`来实现。以下是一些示例: - `TOP`方法: ```sql SELECT TOP 20 * ...

    SQL Server 2005新功能-TSQL的描述

    而在SQL Server 2005中,TOP表达式支持变量,允许动态地指定返回的行数。例如,通过声明一个变量@n并设置其值,然后在TOP(@n)中使用,就可以灵活地获取前n个订单。 2. **分页查询优化**: SQL Server 2005引入了...

    Microsoft_SQL_Server_2005技术内幕:T-SQL查询.pdf

    本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于...

    sql server 2005 批量导出照片代码

    根据提供的信息,我们可以详细解析如何在SQL Server 2005中实现批量导出照片的功能。此过程涉及到了SQL查询、游标(Cursor)的使用以及系统存储过程`xp_cmdshell`来执行文件操作。 ### SQL Server 2005 批量导出...

    SQL Server 2005深入内幕——开发人员,最大的赢家:SQL Server 2005全新的开发特性.pdf

    SQL Server 2005对T-SQL的功能进行了多方面的改进,如优化了TOP子句,引入了CTE(公共表表达式),添加了PIVOT和UNPIVOT操作符,以及新的DDL触发器和TRY-CATCH错误处理结构。 例如,书中可能包含了使用CLR创建存储...

    SQL Server 2005入门

    首先,SQL Server 2005是微软推出的一款中型企业级数据库管理系统,它支持关系型数据库的管理,并提供了丰富的数据管理工具和功能。作为初学者,开始学习时,首先要掌握表和数据类型的概念。 表是数据库中最基本的...

    sqlServer2005习题与答案

    SQL Server 2005 是一个关系型数据库管理系统,提供了丰富的功能用于数据管理和查询。以下是一些基于给定习题的SQL知识点: 1. **查询基础**:`SELECT`语句用于从表中检索数据,`*`表示选择所有列。例如,`SELECT *...

    用SqlServer2005的新功能解决分页显示数据获取的问题

    sqlserver2005的select语句top子句可以跟参数,这样就很好的解决了分页的问题,通用的写法就是: select 【排序列】,【显示列1...N】 from TableName where 【排序列】 in select top (@PageNo*@PageSize) ...

    SQLSERVER2005配置管理[整理].pdf

    开启SQL Server 2005的远程连接功能是配置中的关键步骤。这可以通过配置工具中的SQL Server外围应用配置器实现。具体操作如下: 1. 打开配置工具 -> SQL Server外围应用配置器 -> 服务和连接的外围应用配置器。 2. ...

    DataGridView分页(Sql Server 2005)

    本教程将详细讲解如何在C#环境中,结合Sql Server 2005数据库实现`DataGridView`的分页功能。 一、基本概念与原理 1. `DataGridView`: 这是Windows Forms中的一个控件,可以显示二维表格数据,支持数据编辑、排序...

    sqlserver2008视频教程

    - **版本介绍**:SQL Server 2008 是微软发布的一款关系型数据库管理系统(RDBMS),是 SQL Server 2005 的后续版本。它提供了更强大的数据管理功能,支持更广泛的数据类型,并增强了安全性。 - **主要特点**: - ...

    Sqlserver2005数据库级别异步分页

    SQL Server 2005引入了TOP和ORDER BY子句来实现基本的分页。通过指定TOP N,可以获取前N条记录,配合ORDER BY可以按照特定顺序返回结果。但这种方式在大数据集下可能会导致性能问题,因为它需要扫描所有记录。 3. ...

    SQL Server只能编辑前200行问题

    SSMS是Microsoft提供的一款功能强大的图形化工具,用于管理、配置、控制以及开发SQL Server的各种组件。然而,在使用其数据网格功能进行数据编辑时,SSMS默认只显示并允许编辑查询结果的前200行。这一设置主要是为了...

    java语言的分页查询功能(mysql和sql server)

    MySQL使用`LIMIT`和`OFFSET`关键字,而SQL Server则使用`TOP`和`WITH TIES`或`ROW_NUMBER()`函数。 二、Java中的分页查询 1. JDBC基础:Java标准API中的JDBC(Java Database Connectivity)提供了与数据库交互的...

    解析SQLServer2005的Top功能

    SQL Server 2005的`TOP`功能是一种非常实用的查询操作,允许用户从结果集中选取指定数量的记录。这个功能在数据检索、更新和删除时特别有用,尤其是当处理大量数据时,可以有效地控制返回或操作的数据量。 1. `...

    SQL Server和国产数据库之间数据移植研究.pdf

    在数据查询方面,文档通过SQL Server的 `TOP n` 语句和Kingbase ES 3.1的 `LIMIT` 关键字,说明了如何在两种数据库中实现相似的查询功能。这表明在迁移数据时,需要转换SQL语法以适应新的数据库环境。 最后,文档还...

Global site tag (gtag.js) - Google Analytics