sql2008 t-sql
集合运算 (Set Operations)
UNION 并集
- UNION [DISTINCT]:求并集,删除重复行(隐含DISTINCT)
- UNION ALL:求并集,不比较,不删除重复行
INTERSECT 交集
- INTERSECT [DISTINCT]:求交集(隐含DISTINCT),删除重复行
- INTERSECT ALL (Sql Server不支持):求交集,返回有重复行,但只返回重复行数较少的那个多集(参与交集运算的集合)的所有重复行。假如行R在多集A中重复出现x次,在多集B中重复出现y次,则R在结果集中出现min(x, y)次。
EXCEPT 差集,可使用外联或NOT EXISTS实现
- EXCEPT [DISTINCT]:求差集(隐含DISTINCT),删除重复行
- EXCEPT ALL (Sql Server不支持):求差集,返回有重复行。假如行R在第一个多集中重复出现x次,在第二个多集中重复出现y次,x>y,则R在结果集中出现x-y次。
优先级:
- INTERSECT > ( UNION = EXCEPT )
集合运算的限制:
- 参与结合运算的表表达式中无法使用ORDER BY,ORDER BY只能作用于集合运算的结果。
- 但如果要想在参与集合运算的表表达式中使用TOP来限制行数,就需要使用表表达式将包含ORDER BY的查询包装一次。这种情况下ORDER BY只为TOP提供逻辑服务,并不控制结果的排序。
-- ==================================================
-- Sql Server INTERSECT ALL workaround
-- ==================================================
with INTERSECT_ALL as (
select ROW_NUMBER() over (
partition by region, country, city
order by (select 0)
) as rownum -- only those intersection(smaller) RowNum will remain
, region
, country
, city
from HR.Employees
INTERSECT
select ROW_NUMBER() over (
partition by region, country, city
order by (select 0)
) as rownum -- only those intersection(smaller) RowNum will remain
, region
, country
, city
from Sales.Customers
)
select country, region, city
from INTERSECT_ALL
-- ==================================================
-- Sql Server EXCEPT ALL workaround
-- ==================================================
with EXCEPT_ALL as (
select ROW_NUMBER() over (
partition by region, country, city
order by (select 0)
) as rownum -- intersection(smaller) RowNum will be removed
, region
, country
, city
from HR.Employees
EXCEPT
select ROW_NUMBER() over (
partition by region, country, city
order by (select 0)
) as rownum -- intersection(smaller) RowNum will be removed
, region
, country
, city
from Sales.Customers
)
select country, region, city
from EXCEPT_ALL
-- ==================================================
-- Using ORDER BY inside set operation
-- ==================================================
select empid, orderid, orderdate
from (
select top(2) empid, orderid, orderdate
from Sales.Orders
where empid = 3
order by orderdate desc, orderid desc
) as D1
union all
select empid, orderid, orderdate
from (
select top(2) empid, orderid, orderdate
from Sales.Orders
where empid = 5
order by orderdate desc, orderid desc
) as D2
分享到:
相关推荐
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威书籍。T-SQL是SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...
不过,我可以根据标题和描述提供的信息,以及对SQL Server 2008和T-SQL语言基础知识的理解,为您构建一份关于Microsoft SQL Server 2008中T-SQL语言基础知识的知识点概要。 Microsoft SQL Server 2008是微软公司...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...
本书全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表...
Microsoft SQL Server 2008技术内幕:T-SQL语言基础的示例数据库无法再国外的网址上下载,这个是已经下载好的
《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是Microsoft SQL Server 2008系列中的一本。书中全面深入地介绍了T-SQL的基本元素,以及SQL Server 2008中新增加的一些特性。主要包括SQL的基础理论、逻辑...
Microsoft SQL Server 2005技术内幕:T-SQL查询.part1
作为一本讲述T-SQL高级查询的专业图书,《Microsoft SQL Server 2008技术内幕:T-SQL查询》旨在结合实践中的各种常见问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。《Microsoft SQL ...
《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是针对数据库开发者和管理员的一本深入学习SQL Server 2008 T-SQL(Transact-SQL)语言的专业指南。T-SQL是微软SQL Server的核心语言,用于执行查询、数据操作...
《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程序设计》 《Microsoft SQL Server 2005技术内幕:存储引擎》 《Microsoft SQL Server 2005技术内幕:查询、调整...
《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是关于数据库管理和开发的重要参考资料,专注于T-SQL(Transact-SQL)这一SQL Server的核心编程语言。T-SQL是微软SQL Server中用于数据查询、更新、插入和删除...
《SQLServer2008技术内幕:T-SQL查询》这本书深入探讨了SQL Server 2008中的Transact-SQL(T-SQL)查询语言,这是SQL Server数据库管理系统的核心部分,用于数据检索、更新、插入和删除。T-SQL不仅包含标准的SQL语法...
全球公认SQL Server 2005经典著作,囊括大量鲜为人知的技术内幕,大师智慧、专家经验尽览无余。 本系列图书中文版得到了微软总部SQL Server组专家的高度重视,同时也得到了微软中国上海SQL Server全球技术支持...
本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部构造,包含了非常全面的编程参考。它提供了使用Transact-SQL(T-SQL)的专家级指导,T-SQL是用于SQL Server的最常见的也是...
Microsoft SQL Server 2005技术内幕: T-SQ程序设计 中文版本的 第一部分 第二部分地址:http://download.csdn.net/source/2680866
《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入探讨SQL Server 2005中T-SQL(Transact-SQL)查询的专著。T-SQL是微软数据库管理系统SQL Server的主要编程语言,用于执行数据查询、更新、插入和删除等...
标题中提到的“Microsoft SQL Server 2008技术内幕:T-SQL查询”指向了两方面的知识内容:一是Microsoft SQL Server数据库管理系统,二是T-SQL(Transact-SQL)语言,这是SQL Server中用于数据操作和管理的专有扩展...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。该书涵盖了从基本概念到高级特性的全方位知识,旨在帮助读者理解和掌握SQL Server 2008的...