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

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[轉帖]sqlserver-用 WITH 和 UNION(或者UNION ALL)實現遞歸查詢

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

WITH

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


select in WITH

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

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;

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


遞歸循序

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

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

結果:

 

遞歸查詢通常用于處理分層或樹狀結構的數據。

一個實用的例子是,一種多層級結構的部門結構,要查詢某部門與該部門底下的所有子部門,和子部門下的子部門的部門ID和部門名稱。

一張簡單的部門表如下:

 

有兩種情況:

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

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

 

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

 

這樣就優美的完成了遞歸循環!!

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


參考:

遞迴查詢(Common Table Expressions)

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

版權聲明:本文為CSDN博主「悅千」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

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



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