在很多資料庫表的設計當中,在設計到樹狀結構資料時,並沒有採用新建關聯表,而是將所有的資料都放在的一張表中,即子id與父id共存於一條資料當中。
在這裡,我們可以用遞迴查詢的sql來處理:
select a.*,level from 表名 a start with 條件1 connnect by prior 條件2 where 條件3
例:
(1)、通過父id查詢所有的子id
select id from sc_org start with pid ='0' connect by prior id = pid;
(2)、通過子id查詢所有的父id
select pid from sc_org start with id ='1049692015' connect by prior pid = id;
1、start with :後面的條件表示遞迴的起始點。(從pid或id為多少時開始查)
2、connect by 條件2:表示遞迴時前後兩條資料的關聯關係
3、prior的位置決定了遞迴時的具體關係或者說是決定了查詢時的檢索順序
prior id = pid 可以理解為當前節點的id等於下乙個節點的pid
prior pid = id 可以理解為當前節點的pid等於下乙個節點的id
4、level關鍵字表示層次: 可通過level 關鍵字表示查詢結果所在層次,根節點的層號為1
獲取一張表中列的資料
要獲取一張表的列本身的資料,首先要了解sqlserver中的五張系統表 sysobjects,syscolumns,systypes,sysindexes,sysindexkeys sysobjects,每個資料庫都有一張這樣的系統表,它記錄了所有資料庫物件,比如我們從裡面可以獲取主鍵,表物件名等 ...
MySQL 如何對同一張表來查詢並update ?
mysql 不允許對同一張表來查詢並update的。如下面的 則不能執行。update thb as outer thb set cnt select count from thb as innter thb where innter thb.type outer thb.type 可以通過inne...
更新同一張表的整列字段
先需要先把需要更新的整列結果查詢出來。這裡記錄下mysql時間的函式 date format 欄位名,y m d h i s 第二個引數是要轉換的格式,因為我本來的格式中有毫秒。以下是舉例 轉換的sql select id as dd,date format created,y m d h i s ...