常用資料庫的樹形查詢
表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 資料...