MySQL 目錄樹實現批量條件迴圈查詢

2021-09-25 03:11:45 字數 952 閱讀 6108

1.0 需求

mysql 查詢時,查詢條件有很多。

乙個目錄樹表,獲取了 n 個節點,需要迴圈判斷每個節點是否有子節點。由於資料庫用的外網(不在同乙個區域網內),當節點很多時(超過 500),效率很低,因為需要進行 500 次分次查詢。

資料庫的組織方式:

欄位名稱

pg_id

id 號

pg_name

節點名稱

parent_id

父節點id號

select count(*) from os_pgroup where parent_id = 0

select count(*) from os_pgroup where parent_id = 21

select count(*) from os_pgroup where parent_id = 31

select count(*) from os_pgroup where parent_id = 40

******

2.0 解決方案
select count(*), parent_id from os_pgroup where parent_id in (10, 21, 31, 40, ***) group by parent_id

結果如下:

count(*)

parent_id035

2114311

這樣有子節點的記錄,就可以查詢出來了。

如果父節點個數不多(例如1000個),可以考慮一次性全部取出,再在邏輯**中判斷每個節點

如果查詢條件過於複雜,可以考慮使用檢視、儲存過程(不建議使用)等方式解決

批量匯出與匯入AD目錄樹

步驟說明 一 匯出指定的組織單元資訊,192.168.73.10為域控制器的ip ldifde f e exportou.ldf s 192.168.73.10 d dc beijing,dc corp,dc 9you,dc com p subtree r objectclass organizat...

mysql條件判斷並批量修改資料

要批量修改欄位中特定值的資料時,有兩種方法可以修改 方法一 update table name set column name replace column name,none null 注釋 修改表 table name 中列 column name 的值,當值等於字串 none 時改為null ...

Mysql實現多條件排名

其中重要的知識點有兩個 currank if prevrank s.sum and userrank c1.rank,currank incrank as rank5,incrank incrank 1 prevrank s.sum,userrank c1.rank 判斷 sum是否相同,如果相同,...