日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用SQL进行递归查询

發布時間:2024/9/20 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用SQL进行递归查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在工作當中會經常用到遞歸,比如菜單的展示。一種方法就是從數據庫中取出所有的數據,然后在程序中循環獲取符合條件的數據。另外一種方法就是使用SQL直接讀取符合條件的數據。對于遞歸查詢,T-SQL和PL/SQL進行了不同的處理。

以表Deparment為例

表結構為:

Id 部門內碼,

DeptCode 部門編碼,

ParentDeptId 上級部門內碼

使用T-SQL:

with Dep as ( select Id,DeptCode,DeptName from Department where Id=1 union all select d.Id,d.DeptCode,d.DeptName from Dep inner join Department d on dep.Id = d.ParentDeptId ) select * from Dep .csharpcode, .csharpcode pre { font-size: small; color: rgba(0, 0, 0, 1); font-family: consolas, "Courier New", courier, monospace; background-color: rgba(255, 255, 255, 1) } .csharpcode pre { margin: 0 } .csharpcode .rem { color: rgba(0, 128, 0, 1) } .csharpcode .kwrd { color: rgba(0, 0, 255, 1) } .csharpcode .str { color: rgba(0, 96, 128, 1) } .csharpcode .op { color: rgba(0, 0, 192, 1) } .csharpcode .preproc { color: rgba(204, 102, 51, 1) } .csharpcode .asp { background-color: rgba(255, 255, 0, 1) } .csharpcode .html { color: rgba(128, 0, 0, 1) } .csharpcode .attr { color: rgba(255, 0, 0, 1) } .csharpcode .alt { background-color: rgba(244, 244, 244, 1); width: 100%; margin: 0 } .csharpcode .lnum { color: rgba(96, 96, 96, 1) }

簡單解釋一下:with as屬于sql server新特性CTE(Common Table Expression)的關鍵字,用來儲存臨時結果集。常用于代替子查詢。本例中可以理解為,找出Id=1的記錄后,存放在臨時表Dept中,然后臨時表和Department進行內連接,找出它的子記錄。子記錄和第一條記錄union后作為Dept新的結果集繼續進行內連接,找出新的子記錄。

使用PL/SQL:

select Id,DeptCode,DeptName from Department start with Id = 1 connect by prior Id = ParentDeptId;

start with 表示從哪一行記錄開始遞歸查詢,即根節點 connect by 表示進行遞歸,后面跟遞歸條件 prior 表示前一條記錄,表示上一條記錄的Id = 下一條記錄的ParentDeptId 比如上面的SQL語句就可以理解為,以Id 為1的記錄為根節點,遞歸查詢下一條記錄的ParentDeptId = 前一條記錄的Id

以上,對使用SQL進行遞歸查詢進行了簡單的總結,作為備忘錄吧,希望也可以對大家有所幫助,謝謝!

總結

以上是生活随笔為你收集整理的使用SQL进行递归查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。