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)
----------------------------------------------------------------------------------------------------------------------------
with a as (select * from dept) select * from emp where emp.deptno in (select deptno from a)
例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
with a as(select * from dept),b as(select * from emp)
select * from B where B.deptno in(select deptno from a)
union all
select * from b
二、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查詢的結果列有別名,引用的時候必須使用別名或*。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29209863/viewspace-2128986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- 使用SQL語句獲取SQLite中的表定義SQLite
- 關於Mybatis中SQL語句的整理MyBatisSQL
- Oracle中SQL語句解析的步驟OracleSQL
- oracle之PLSql語言(二)sql語句的使用OracleSQL
- 使用sql語句分析雙色球SQL
- SQL語句使用總結(一)SQL
- SQL查詢語句使用 (轉)SQL
- 使用mysqlsniffer捕獲SQL語句MySql
- SQl CASE 語句的巢狀使用方式SQL巢狀
- php中return語句的使用PHP
- MySQL中explain語句的使用MySqlAI
- sql server 中的一些實用的sql語句SQLServer
- SQL語句SQL
- SQL語句IN的用法SQL
- 常用的SQL語句SQL
- 常用的SQL 語句SQL
- SQL 語句 as 的用法SQL
- oracle的sql語句OracleSQL
- springboot 中列印 sql 語句Spring BootSQL
- sql中row_number over語句SQL
- 利用pl/sql執行本地的sql檔案中的sql語句SQL
- 常用的Sqlite SQL語句(持續更新中)SQLite
- oracle 中 sql語句的違反協議???OracleSQL協議
- GOTO語句在PL/SQL中的應用GoSQL
- 關於在SAP中SQL語句的效能SQL
- Oracle中SQL語句解析的步驟(轉)OracleSQL
- 使用hint來調優sql語句SQL
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- sql中as的用法和一些經典的sql語句SQL
- 【Tips】使用SQL生成外來鍵的SQL建立語句SQL
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- Laravel 中輕鬆容易的輸出 SQL 語句LaravelSQL
- SQL語句的優化SQL優化
- sql語句的簡化SQL
- 實用的SQL語句~!SQL
- 在事務中執行sql語句SQL
- 在nhibernate中執行SQL語句SQL