`

T-SQL查询学习笔记——TOP子句

阅读更多
在select查询或表表达式中,top结合order by子句用于限制按order by顺序优先返回的结果
在2000中,只能使用常量制定该限制,而2005中支持在top中使用任意的独立表达式,而不仅仅是常量

例子:
SELECT TOP(3) OrderID, CustomerID, OrderDate
FROM dbo.Orders
ORDER BY OrderDate DESC, OrderID DESC;


SELECT TOP(1) PERCENT OrderID, CustomerID, OrderDate
FROM dbo.Orders
ORDER BY OrderDate DESC, OrderID DESC;
GO

因为Sql Server 2005支持把任意独立表达式作为TOP的输入,所以表达式必须被包含在圆括号内。为了向后兼容,仍然支持在select top查询中使用常量时可以不带圆括号

Top和确定性
Top查询并不一定要有Order by字句,然而这样的查询具有不确定性。也就是说,对相同的数据运行两次同样的查询,可能会产生不同的结果。

使用不带order by子句的select top查询的理由:
1、用select top查询快速预览表的结构或列名称
2、用select top(0)创建一个与另一个表或查询具有相同结构的空表

Top和输入表达式

DECLARE @n AS INT;
SET @n = 2;

SELECT TOP(@n) OrderID, OrderDate, CustomerID, EmployeeID
FROM dbo.Orders
ORDER BY OrderDate DESC, OrderID DESC;

Top和修改

Sql Server不支持在数据修改语句中使用order by子句,即使使用了top选项也是如此,所以它不能依赖于排序。Sql Server只影响正好先访问到的指定行数

新增:
Insert top(100) into target_table select col1,col2,col3 from source_table

删除:
DELETE TOP(100) FROM dbo.LargeOrders

修改:
UPDATE TOP(5000) dbo.LargeOrders
    SET CustomerID = N'ABCDE'
  WHERE CustomerID = N'OLDWO';

变相排序
新增:
insert into target_table
select top(10) col1,col2,col3 from source_table order by col1;
删除:
with cte_del as
(
select top(10) * from some_table order by col1
)
delete from cte_del
修改:
with cte_upd as
(
select top(10) * from some_table order by col1
)
update cte_del set col2=col2+1

分享到:
评论

相关推荐

    Microsoft SQL Server 2008技术内幕:T-SQL查询_源代码及附录.zip

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威书籍。T-SQL是SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...

    Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码

    《Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中用于数据操作、查询、存储过程...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    《Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询》是一部深入探讨SQL Server 2005数据库管理系统中Transact-SQL(T-SQL)查询技术的专业著作。本部分主要聚焦于如何高效、准确地在SQL Server 2005环境中...

    SQL Server2005 技术内幕:T-SQL查询(笔记).docx

    SQL Server 2005 技术内幕:T-SQL 查询笔记 本笔记涵盖了 SQL Server 2005 技术内幕中 T-SQL 查询的前两章内容,主要介绍了逻辑查询处理、查询优化器、查询执行步骤、查询筛选器、聚合函数、子查询、别名的使用限制...

    Sql2008技术内幕-T-Sql查询

    《SQL2008技术内幕——T-SQL查询》是一本深入探讨Microsoft SQL Server 2008数据库管理系统中T-SQL(Transact-SQL)查询的权威指南。T-SQL是SQL Server的核心语言,用于数据操作、存储过程编写、触发器定义以及...

    sql server 2012 T-SQl基础教程 源码和示例数据库

    《SQL Server 2012 T-SQL基础教程——源码与示例数据库》 本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程...

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

    本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

     作为一本讲述T-SQL高级查询的专业图书,《Microsoft SQL Server 2008技术内幕:T-SQL查询》旨在结合实践中的各种常见问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。《Microsoft SQL ...

    Microsoft SQL Server 2005技术内幕:T-SQL查询

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入探讨SQL Server 2005中T-SQL(Transact-SQL)查询的专著。T-SQL是微软数据库管理系统SQL Server的主要编程语言,用于执行数据查询、更新、插入和删除等...

    MicroSoft Sql Server2005:T-Sql查询

    **Microsoft SQL Server 2005 T-SQL查询详解** SQL Server 2005是Microsoft公司推出的一款强大且广泛使用的数据库管理系统...在"ch01.pdf"文档中,你将找到更详细的技术解析和实例,这将是你学习T-SQL查询的宝贵资源。

    SQLServer2008技术内幕:T-SQL查询

    通过对《SQLServer2008技术内幕:T-SQL查询》的学习,读者可以全面掌握SQL Server 2008中的T-SQL查询,从而更好地设计、实施和优化数据库应用。无论是数据库开发者还是管理员,都能从中受益匪浅。

    MS.SQL.Server.2008.技术内幕:T-SQL.查询.rar

    T-SQL(Transact-SQL)是SQL Server的标准查询语言,它是SQL的扩展,包含了SQL的所有功能,并增加了一些特有的编程元素,如过程、函数和事务控制等。 在SQL Server 2008中,T-SQL是进行数据管理、分析和应用程序...

    T-SQL示例大全(全是T-SQL语句 )

    T-SQL,全称Transact-SQL,是SQL语言的一个扩展,主要用于Microsoft SQL Server数据库管理系统。它是数据库查询、数据更新、事务...通过学习和实践这些示例,你可以深入了解T-SQL的强大功能,并提升数据库管理技能。

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入解析SQL Server 2005中T-SQL查询语言的专业书籍。T-SQL(Transact-SQL)是微软对标准SQL的扩展,是SQL Server的核心组件,用于数据库管理、数据查询和...

    SQL SERVER 2005技术内幕:T-SQL查询

    通过对这些主题的深入学习,读者将能够熟练地编写复杂的T-SQL查询,解决实际数据库问题,并有效地利用SQL Server 2005的特性。书中包含的代码示例,不仅可以作为参考,也可以直接应用于实际项目中,对于提升数据库...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录A

    通过深入学习《Microsoft SQL Server 2008技术内幕:T-SQL查询》这本书,读者将能够熟练地使用T-SQL进行数据查询、操作和分析,从而更好地应对实际工作中的挑战。书中的源代码和附录A提供了丰富的实践示例,进一步...

    数据库习题----————————

    数据库是存储和管理数据的重要工具,SQL(Structured Query Language)是用于操作数据库的语言。以下是对题目中涉及的一些关键知识点的详细解释: ...通过学习和理解这些内容,可以更好地进行数据管理、查询和分析。

    T-SQL核对清单——13条卓有成效的T-SQL实践.pdf

    T-SQL核对清单提供了13条实践建议,旨在提升数据库开发人员使用T-SQL(Transact-SQL,SQL Server中的SQL语言版本)进行数据处理时的效率与代码质量。以下是这些实践知识点的详细说明: 1. 使用基于集的解决方案:T-...

Global site tag (gtag.js) - Google Analytics