sql中,with的用法
WITH 通常與AS連用,也叫做子查詢部分。
用法:1). 可用來定義一個SQL片斷,該片斷會被整個SQL語句所用到。2). 為了讓SQL語句的可讀性更高3). 也有可能是在UNION ALL的不同部分,作為提供數據的部分。
特別對于UNION ALL比較有 用。因為UNION ALL的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本 太高,所以可以使用WITH AS短語,則只要執行一遍即可。
例如:下面兩種表達的是同一種意思: ①with alias as (select * from pra) ②select * from pra;。
SQL中使用WITH 語句的查詢
sql with as 用法(適用sqlserver,好像oracle也適用) Server 2005中提供了公用表表達式(CTE),使用CTE,可以使SQL語句的可維護性,同時,CTE要比表變量的效率高得多。
下面是CTE的語法: [ WITH
如下面的SQL語句將無法正常使用CTE: with cr as ( select CountryRegionCode from *yRegion where Name like 'C%' ) select * from *yRegion -- 應將這條SQL語句去掉 -- 使用CTE的SQL語句應緊跟在相關的CTE后面 -- select * from *rovince where CountryRegionCode in (select * from cr) 2. CTE后面也可以跟其他的CTE,但只能使用一個with,多個CTE中間用逗號(,)分隔,如下面的SQL語句所示: with cte1 as ( select * from table1 where name like 'abc%' ), cte2 as ( select * from table2 where id > 20 ), cte3 as ( select * from table3 where price < 100 ) select a.* from cte1 a, cte2 b, cte3 c where * = * and * = * 3. 如果CTE的表達式名稱與某個數據表或視圖重名,則緊跟在該CTE后面的SQL語句使用的仍然是CTE,當然,后面的SQL語句使用的就是數據表或視圖了,如下面的SQL語句所示: -- table1是一個實際存在的表 with table1 as ( select * from persons where age < 30 ) select * from table1 -- 使用了名為table1的公共表表達式 select * from table1 -- 使用了名為table1的數據表 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 用在屬于批處理的一部分的語句中,那么在它之前的語句必須以分號結尾,如下面的SQL所示: declare @s nvarchar(3) set @s = 'C%' ; -- 必須加分號 with t_tree as ( select CountryRegionCode from *yRegion where Name like @s ) select * from *rovince where CountryRegionCode in (select * from t_tree) 7、CTE除了可以簡化嵌套SQL語句外,還可以進行遞歸調用。
sql中with as的用法
如下:
[TEST@ORA1] SQL>with cr as(
2 select * from tab)
3 select * from cr;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
A TABLE
TEST TABLE
詳細的說明請參照:
http://**wudataoge/blog/static/80073886200961652022389/
---
以上,希望對你有所幫助。
問一下關于SQL語句的問題,with什么意思,別的都是什么意思,謝謝
with as 得到的數據是一次性使用的臨時數據。其中with 不是單獨一個意思,跟as組合起來后成為一個短語。
舉個例子:
with [abc] as(……)
select …… from [abc] where 條件A
select …… from [abc] where 條件B
以上語句在執行時,條件A的語句能取到數;取完數后 臨時數據[abc]就清除了;所以到條件B的語句就執行不下去了。
請問一下,那位高手知道數據庫語句中 in ,on ,with 等關鍵字的用法啊,
這個問題不太明確,in,謂詞,用來查找屬性值屬于指定集合的元組 ,可以作為一個where條件 select * from table where id in ('1','2'),還可以組合成關鍵字;ON 是連接時候的條件 join on 兩個表的關系 ;wiht可單獨使用,提供不同功能,例如 with chenk option等,還有一種常用的用法是 with as,
WITH 通常與AS連用,也叫做子查詢部分。用法:
1). 可用來定義一個SQL片斷,該片斷會被整個SQL語句所用到。
2). 為了讓SQL語句的可讀性更高
3). 也有可能是在UNION ALL的不同部分,作為提供數據的部分。特別對于UNION ALL比較有
用。因為UNION ALL的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本
太高,所以可以使用WITH AS短語,則只要執行一遍即可。
例如:下面兩種表達的是同一種意思:
①with alias as (select * from pra)
②select * from pra;
轉載請注明出處華閱文章網 » sql語句with的用法