随笔 - 99  文章 - 2 评论 - 901 trackbacks - 17
<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789


转载请保留链接。
国家体育场(鸟巢)是建筑史上的令人惊叹之作,杂乱的基础结构组成了一个和谐的整体,正是中国社会的成功写照。 7-18 17:44

与我联系

常用链接

留言簿(11)

我参与的团队

我的标签

随笔分类

随笔档案

文章分类

相册

最新随笔

搜索

  •  

积分与排名

  • 积分 - 141203
  • 排名 - 243

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

 CTECommon Table Expression的简写,翻译成中文就是通用表表达式,它可以在selectinsert或者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
--下面我们使用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还可以用在insertupdate中用法大同小异,就不一一列举。

Tag标签: sql,cte,t-sql
posted on 2008-04-29 18:05 玉开 阅读(247) 评论(4)  编辑 收藏 所属分类: 数据库sql server

FeedBack:
#1楼  2008-04-30 08:35 李战      
俺学到了新东东,谢谢!
  回复  引用  查看    
#2楼  2008-04-30 20:34 Kingthy      
同直接建视图然后再删除好像差不多
  回复  引用  查看    
#3楼  2008-05-07 23:41 OK_008      
CTE还可以实现递归。

  回复  引用  查看    
#4楼 [楼主] 2008-06-02 10:29 玉开      
@Kingthy
建视图肯定需要操作系统表的,效率上会有问题,我觉得这个更像子查询,只不过写法更可读一些。
  回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-07 09:00 编辑过
 
另存  打印