Sql Server2005对t-sql的增强之通用表表达式CTE

2016-02-19 16:01 8 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的Sql Server2005对t-sql的增强之通用表表达式CTE,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  CTE是Common Table Expression的简写,翻译成中文就是通用表表达式,它可以在select,insert或者update中使用。

  为了说明问题,我们先随便建张表,插入几条数据:

  if object_id('t','U') is not null --用object_id函数判断表是否在数据库中存在很简洁

drop table t;
GO
create table t(c1 int,c2 decimal,c3 int);
GO
INSERT INTO t
SELECT c1 = 1,c2 = 5.0,c3=10
UNION
SELECT c1 = 2,c2 = 5.5,c3=10
UNION
SELECT c1 = 3,c2 = 5.0,c3=20
UNION
SELECT c1 = 4,c2 = 5.5,c3=20

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  --下面我们使用CTE写一个分页的sql语句

GO
WITH t_cn AS
(  
select c1,c2,c3,rn = ROW_NUMBER() OVER(ORDER BY c1 DESC) FROM t WHERE 0 = 0 --可以在此处添加一些条件
)
SELECT c1,c2,c3 FROM t_cn WHERE rn between 2 and 3
SELECT totalCn = COUNT(*) FROM t WHERE 0 = 0

  这就是一个最最简单的示例了,这样写出来的分页是不是很简洁?CTE还可以用在insert和update中用法大同小异,就不一一列举。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1610903.html

延伸阅读
一、 SQLCLR权限集级别 当你使用CREATE ASSEMBLY语句把一个程序集加载到一个数据库中时,SQL Server提供了三种权限集级别:SAFE,EXTERNAL_ACCESS和UNSAFE。这些权限集形成如图3和图5(均请参考第二篇)所示的AppDomain策略级别。 下面是一个典型的语句,它实现安装位于FileLoader.dll文件内的一个程序集,并且赋予它EXTERNAL_AC...
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET STATISTICS TIME这二条被经常忽略的Transact-SQL命令的。 从表面上看,查询性能的调节是一件十分简单的事。从本质上讲,我们希望查询的运行速度能够尽可能地快,...
问题 有了SQL Server管理套件你就可以做你在使用T-SQL命令时可以做的任何事情了。使用图形用户界面的一个问题是要记住所有你点击过的来再次重新执行这个动作是很困难的。另一个问题是你通过图形用户界面所做的大部分事情都立即执行了,这并不总是最好的。那么该怎样捕捉SQL Server正在做什么以便我之后可以重新执行这个动作或运行这...
Select字句在逻辑上是SQL语句最后进行处理的最后一步,所以,以下查询会发生错误: SELECT YEAR(OrderDate) AS OrderYear, COUNT(DISTINCT CustomerID) AS NumCustsFROM dbo.OrdersGROUP BY OrderYear; 因为group by是在Select之前进行的,那个时候orderYear这个列并没有形成。 如果要查询成功,可以像下面进行修改: SELECT OrderYear, ...
AD HOC PAGING : 就是指用页面的序号和页面的大小请求一个单独的页面。下面是例子。 DECLARE @pagesize AS INT, @pagenum AS INT;SET @pagesize = 5;SET @pagenum = 2;WITH SalesCTE AS( SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty FROM dbo.Sales)SELECT rownum, empid, mgrid, qtyFROM SalesCTEWHERE...

经验教程

489

收藏

51
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部