表表达式和CTE

本文探讨了表表达式和公共表表达式(CTE)的使用方法,包括指定列别名的方式、表表达式的限制以及CTE的正确用法。通过具体的例子展示了如何在SQL查询中有效利用这些特性。
 
-- =============================================            
-- Author:      余波(杭州)            
-- Create date: 2011/09/27            
-- Description: 表表达式和CTE           
-- =============================================

--表a1结构及数据如下
/*
id	name
1	2
2	3
3	4
*/
---表表达式,外部指定列别名
select idname from (select ID from a1)as d(idname)

---表表达式,内部指定列别名
select idname from (select id as idname from a1)d

---表表达式不支持多引用
select * from (select id from a1)t join (select id from a1)t on t.id=t.id  ---错误
select * from (select id from a1)t join (select id from a1)u on u.id=t.id  ---正确

----cte中with前面最好用分号的原因是:with在T-SQL中还有其它用途,为避免歧义CTE with
----之前的语句必须用分号结束(但T-SQL并未强制要求)

----CTE和表表达式相同,也可以再内部和外部指定列别名
----内部
with cte1 as
(
	select id as idname from a1
)select idname from cte1;

----外部
with cte2(idname) as
(
	select id from a1
)select * from cte2

---多cte查询,最后可以引用上面任意一个cte
;with cte3 as
(select id from a1)
,
cte4 as
(
	select id from cte3 where id>=2
)
select * from cte3 a left join cte4 b on a.id=b.id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值