狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[轉(zhuǎn)帖]sqlserver-用 WITH 和 UNION(或者UNION ALL)實(shí)現(xiàn)遞歸查詢

freeflydom
2023年5月29日 10:44 本文熱度 954

WITH

WITH提供了一種撰寫用于更復(fù)雜查詢輔助語句的方法。這些通常被稱為公用數(shù)據(jù)表表示式或CTE(Common Table Expressions)的宣告可以被想成是定義僅存在于一個查詢中的臨時數(shù)據(jù)表。WITH子句中的每個輔助語句都可以是select、insert、update或delete;并且WITH子句本身附加到select、insert、update或delete的主語句。


select in WITH

select中WITH的基本價值是將復(fù)雜的查詢分解為較為簡單的部分。例子如下:

WITH regional_sales AS(

select region,SUM(amount)AS total_sales

from orders

GROUP BY region

),top_regions AS(

select region

from regional_sales

where total_sales >(select SUM(total_sales)/10 from regional_sales)

select region,

product,

SUM(quantity)AS product_units,

SUM(amount)AS product_sales

from orders

where region IN(select region from top_regions)

GROUP BY region,product;

其中僅顯示最上層銷售區(qū)域中的每個產(chǎn)品的銷售總計。WITH子句定義了兩個名為regional_sales和top_regions的輔助語句,其中top_size使用region_sales的輸出,top_regions的輸出在主select語句中使用。這個例子本來可以不用WITH編寫,但是我們需要兩層的select子查詢。按照這種方式更容易一些。


遞歸循序

一個非常簡單的例子是這個查詢來從1到100的整數(shù)求和:

WITH t3 AS 

(

select 0 as val

union ALL

select val+1 as val 

from t3 

where  val <100 

)

select sum(val) as sum from t3

結(jié)果:

 

遞歸查詢通常用于處理分層或樹狀結(jié)構(gòu)的數(shù)據(jù)。

一個實(shí)用的例子是,一種多層級結(jié)構(gòu)的部門結(jié)構(gòu),要查詢某部門與該部門底下的所有子部門,和子部門下的子部門的部門ID和部門名稱。

一張簡單的部門表如下:

 

有兩種情況:

1.有卡層次,例如卡最多三層,部門1->部門1.1->部門1.1.1

這種情形的可以選擇left jion的方式:

 

2.沒有卡層, 在創(chuàng)建部門的時候不進(jìn)行層級的卡控,這個時候是沒有辦法選擇用left join來實(shí)現(xiàn),可以考慮用遞歸的方式,我們這時可使用WITH:

 

這樣就優(yōu)美的完成了遞歸循環(huán)!!

總結(jié):前兩周第一次看到這種寫法的時候,確實(shí)被驚艷到了!覺得很酷!不過一直都沒有在實(shí)際中用到,在前幾天剛好碰到有個不卡層級的部門結(jié)構(gòu)需要查詢部門與所有子部門的一些資料,腦袋就突然想到這個寫法!最后完美的實(shí)現(xiàn)功能,所以想開通第一篇博客來記錄下來!


參考:

遞迴查詢(Common Table Expressions)

————————————————

版權(quán)聲明:本文為CSDN博主「悅千」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/Ryomaku/article/details/100068078



該文章在 2023/5/29 10:44:17 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved