不用寫超級多的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可以看組是乙個臨時的...