SQL語句 with as 用法

2021-09-30 13:19:07 字數 1039 閱讀 2384

一直以來很少在sql中使用過with  as  的用法,現在打算記錄這條語句的使用方法。

with as短語,也叫做子查詢部分(subquery factoring),是用來定義乙個sql片斷,該sql片斷會被整個sql語句所用到。這個語句算是公用表表示式(cte)。 比如

with a as (select * from class)

select *from a  

這個語句的意思就是,先執行select * from class   得到乙個結果,將這個結果記錄為a  ,在執行select *from a  語句。a 表只是乙個別名。

也就是將重複用到的大批量 的sql語句,放到with  as 中,加乙個別名,在後面用到的時候就可以直接用。

對於大批量的sql資料,起到優化的作用。

二、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查詢的結果列有別名,引用的時候必須使用別名或*。

SQL 中With as 的用法

一 with as的含義 with as短語,也叫做子查詢部分 subquery factoring 可以讓你做很多事情,定義乙個sql片斷,該sql片斷會被整個sql語句所用到。有的時候,是為了讓sql語句的可讀性更高些,也有可能是在union all的不同部分,作為提供資料的部分。特別對於uni...

SQL 中With as 的用法

一 with as的含義 with as短語,也叫做子查詢部分 subquery factoring 可以讓你做很多事情,定義乙個sql片斷,該sql片斷會被整個sql語句所用到。有的時候,是為了讓sql語句的可讀性更高些,也有可能是在union all的不同部分,作為提供資料的部分。特別對於uni...

sql中with as的用法

一 with as的含義 with as短語,也叫做子查詢部分 subquery factoring 可以讓你做很多事情,定義乙個sql片斷,該sql片斷會被整個sql語句所用到。有的時候,是為了讓sql語句的可讀性更高些,也有可能是在union all的不同部分,作為提供資料的部分。特別對於uni...