常用資料庫的樹形查詢

2021-06-29 05:34:57 字數 2783 閱讀 2352

常用資料庫的樹形查詢

表recursion

資料如下

:id      name      parentid

1      食品分類

-12      肉類1

3      

蔬菜類1

4      

產品分類

-15      

保健品4

6      醫藥4

7      建築4

一oracle

中實現方法

:oracle

中直接支援

,使用語句

select * from tablename start with id='1' connect by

prior id

=parentid

語句說明

:   

start with 

指定層次開始的條件,即滿足這個條件的行即可以作為層次樹的最頂層

connect by prior

指層之間的關聯條件,即什麼樣的行是上層行的子行(自連線條件)例項:

select * from tablename start with id='1' connect by

prior id

=parentid

查詢結果

:id      name      parentid

1      食品分類

-12      肉類1

3      

蔬菜類1

二mssql

中的實現方法

在mssql

中需要使用臨時表和迴圈多次查詢的方式實現

.建立函式

:create function getrecursion(@id int)

returns @t table(

idint,

namevarchar(50),

parentidint)as

begin

insert @tselect * from recursion where>   while @@rowcount>0

insert @t select a.* from recursion as a inner join @t as b

on a.parentid=b.id and a.id not in(select id from @t)

return

end使用方法

:select * from getrecursion(4)

查詢結果

:id      name      parentid

4      產品分類

-15      

保健品4

6      醫藥4

7      建築4

三mysql

中的實現方法

查詢語句:

select b.id,b.name,b.parentid from recursion as a, recursion as bwhere

a.id=b.parentid and (a.id=1 or a. parentid =1)

查詢結果:

id      name      parentid

2      肉類

13      

蔬菜類1四在

oracle

、mssql

、mysql

中可以使用下面的查詢語句只返回樹結構表的子結點資料

select *

from tablename t

where not exists (select 'x'

from tablename t1, tablename t2

where t1.id = t2.parentid

and t1.id = t.id)

如:select *

from recursion t

where not exists (select 'x'

from recursion t1, recursion t2

where t1.id = t2.parentid

and t1.id = t.id)

查詢結果:

id      name      parentid

2      肉類

13      

蔬菜類1

5      

保健品4

6      醫藥4

7      建築4

五在oracle

、mssql

、mysql

中可以使用下面的查詢語句只返回樹結構表的根結點資料

select *

from tablename t

where not exists (select 'x'

from tablename t1, tablename t2

where t1.id = t2.parentid

and t1.id = t. parentid)

如:select *

from recursion t

where not exists (select 'x'

from recursion t1, recursion t2

where t1.id = t2.parentid

and t1.id = t. parentid)

查詢結果:

id      name      parentid

1      食品分類

-14      

產品分類

-1

資料庫 查詢常用的函式

日期轉換 convert 型別長度,date,格式 例項 convert char 10 2018 01 30 09 42 00.521 23 會得到 2018 01 30 格式有很多可以專門去查sqlserver日期轉換的格式,個人常用的格式 23 yyyy mm dd,112 yyyymmdd,...

資料庫常用查詢語句

1.all表示所有 where a all select b from t where 條件 a滿足所有b的條件 2.order by排序 select from order by company desc desc是降序 asc是公升序 預設事務開啟的作用是什麼?當我們去執行乙個sql語句的時候,...

資料庫 MySql 常用查詢

目錄 1 比較兩個表字段差異 2 將資料的日期更新到當前日期 3 清空所有表的資料 4 刪除所有表 5 刪除所有檢視 6 刪除所有函式 7 刪除所有儲存過程 8 查詢資料超過1000行的表 9 刪除資料超過1000行表的資料,並保留500條 10 檢視資料庫所有觸發器 db1 資料庫1 db2 資料...