sql server 公共表表示式的學習

2021-08-20 15:31:04 字數 1301 閱讀 6365

不用寫超級多的inner join  ,取別名的時候很痛苦 

用處:可以查詢臨時的結果集

可以和資料表進行關聯

可以用來遞迴查詢(當時沒怎麼看懂)

用來達到和isnull一樣的用法

實際應用的例子:

和isnull 用法對比

首先是isnull的寫法

select m.sysno ,

isnull((select  count(so.sysno) from ipp3..so_master so

inner join ipp3..so_checkshipping sp

on  so.sysno=sp.sosysno 

where so.ismobilephone in (5,15)

and so.status in (0,1,4,5,7,41,45)

and so.outzonetime >= '2018-05-11 00:00:00' and so.outzonetime< '2018-05-18 00:00:00'  and sp.merchantsysno=m.sysno

group by sp.merchantsysno

),0)

from ipp3..vendor m

where  m.sysno in 

(642,

791,

1097,

) group by  m.sysno

然後是cte(表表示式的用法)

with  a as 

(select sp.merchantsysno, count(so.sysno) as s from ipp3..so_master so

inner join ipp3..so_checkshipping sp

on  so.sysno=sp.sosysno 

where so.ismobilephone in (5,15)

and so.status in (0,1,4,5,7,41,45)

and so.outzonetime >= '2018-05-11 00:00:00' and so.outzonetime< '2018-05-18 00:00:00' 

group by sp.merchantsysno)

select v.sysno,a.s from ipp3..vendor v

left join a

on v.sysno=a.merchantsysno

where v.sysno  in 

(642,

791,

1097,

)

公用表表示式

公用表表示式 common table expressions 假設我們有乙個100w條資料的訂單表,需要分頁查詢。declare rownumber asint,pagenumber asint set rownumber 5 set pagenumber 2 with orderedorders...

公用表表示式CTE

公用表表示式cte表面上和派生表非常相似,看起來只是語義上的區別。但和派生表比較起來,cte具有幾個優勢 第一,如果須要在乙個cte中引用另乙個cte,不需要像派生表那樣巢狀,相反,只要簡單地在同乙個with子句中定義多個cte,並用逗號把它們分隔開。每個cte可以引用在它前面定義的所有cte。而外...

公用表表示式 CTE

在編寫t sql 時,往往需要臨時儲存某些結果集。前面我們已經廣泛使用和介紹了兩種臨時儲存結果集的方法 臨時表和表變數。除此之外,還可以使用公用表表示式的方法。公用表表示式 common table expression 是sql server2005版本的引入的乙個特性。cte可以看組是乙個臨時的...