CTE初識

來源:互聯網
上載者:User

標籤: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 用在屬於批處理的一部分的語句中,那麼在它之前的語句必須以分號結尾。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.