標籤:style blog color 使用 io 資料 for div
微軟從SQl2005起引入了CTE(Common Table Expression)以強化T-SQL。這是一個類似於非持久視圖的好東西。
正常的SQL語句:
select * from person.StateProvince where CountryRegionCode in (select CountryRegionCode from person.CountryRegion where Name like ‘C%‘)
CTE寫迴圈遞迴的語句:
with cr as ( select CountryRegionCode from person.CountryRegion where Name like ‘C%‘ --這是條件) select * from person.StateProvince where CountryRegionCode in (select * from cr)
在使用CTE時應注意如下幾點:
1. CTE後面必須直接跟使用CTE的SQL語句(如select、insert、update等),否則,CTE將失效。
2. CTE後面也可以跟其他的CTE,但只能使用一個with,多個CTE中間用逗號(,)分隔。
3. 如果CTE的運算式名稱與某個資料表或視圖重名,則緊跟在該CTE後面的SQL語句使用的仍然是CTE,當然,後面的SQL語句使用的就是資料表或視圖了。
4. CTE 可以引用自身(遞迴查詢),也可以引用在同一 WITH 子句中預先定義的 CTE。不允許前向引用。
5. 不能在 CTE_query_definition 中使用以下子句:
(1)COMPUTE 或 COMPUTE BY
(2)ORDER BY(除非指定了 TOP 子句)
(3)INTO
(4)帶有查詢提示的 OPTION 子句
(5)FOR XML
(6)FOR BROWSE
6. 如果將 CTE 用在屬於批處理的一部分的語句中,那麼在它之前的語句必須以分號結尾。