sql 中的with 語句使用


一直以來都很少使用sql中的with語句,但是看到了一篇文章中關於with的使用,它的確蠻好用,希望以后記得使用這個語句。
一、with 的用法
With alias_name as (select1)[,alias_namen as (select n) ]--中括號可以省略
Select ….
舉例,如下兩表:
A B
ID NAME ID NAME
1 LI 1 LI
2 QIN 3 SUN
語句如下:
例1
with test_with as(select * from A) select * from B where B.id in(select id from test_with)
例2
with test_with1 as(select * from A),test_with2 as(select * from B)
select * from B where B.id in(select id from test_with1)
union all
select * from test_with2

[@more@]

二、with的相關總結
1.使用with子句可以讓子查詢重用相同的with查詢塊,通過select調用(with子句只能被select查詢塊引用),一般在with查詢用到多次情況下。在引用的select語句之前定義,同級只能定義with關鍵字只能使用一次,多個用逗號分割。

2.with子句的返回結果存到用戶的臨時表空間中,只做一次查詢,反復使用,提高效率。

3.在同級select前有多個查詢定義的時候,第1個用with,后面的不用with,並且用逗號隔開。

4.最后一個with 子句與下面的查詢之間不能有逗號,只通過右括號分割,with 子句的查詢必須用括號括起來

5.如果定義了with子句,而在查詢中不使用,那么會報ora-32035 錯誤:未引用在with子句中定義的查詢名。(至少一個with查詢的name未被引用,解決方法是移除未被引用的with查詢),注意:只要后面有引用的就可以,不一定非要在主查詢中引用,比如后面的with查詢也引用了,也是可以的。

6.前面的with子句定義的查詢在后面的with子句中可以使用。但是一個with子句內部不能嵌套with子句。

7.當一個查詢塊名字和一個表名或其他的對象相同時,解析器從內向外搜索,優先使用子查詢塊名字。

8.with查詢的結果列有別名,引用的時候必須使用別名或*。

 

鏈接:http://blog.itpub.net/31411099/viewspace-2128543/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM