MySql遞迴查詢父級 子級資料

2021-10-07 16:03:01 字數 1054 閱讀 1295

1.根據父級id遞迴查詢所有下級id

select

id from

( select

t1.id,

if (

find_in_set

( t1.parent_id,

@pids

)>0,

@pids:=

concat

(@pids

,','

, t1.id ),0

) as ischild

from

( select id, parent_id from table_name t order by parent_id, id ) t1,

( select @pids:=

'16'

) t2

) t3

where

ischild !=

0 or id =

'16'

此方法,通過find_in_set找出當前資料的parent_id是否在@pids的滿足條件的字串當中。如果符合,則將當前資料的id加入@pids;否則ischild設定為0。依次往下查詢,最終找出ischild不為0的即為滿足條件的資料id集合。

根據子級id遞迴查詢所有父級id

select

t2.id

from

( select

@r as _id,

( select @r

:= parent_id from table_name where id = _id ) as parent_id,@s:

=@s+1 as sort

from

( select @r:=

23,@s:

=0) temp,

table_name

where

@r>

0) t1

join table_name t2 on t1._id = t2.id

order by

t1.sort desc

mysql 查詢父級

mysql遞迴查詢,mysql中從子類id查詢所有父類 做無限分類經常用到 由於mysql 不支援類似 oracle with connect的 遞迴查詢語法 之前一直以為類似的查詢要麼用儲存過程要麼只能用程式寫遞迴查詢.現在發現原來一條sql語句也是可以搞定的 先來看資料表的結構如下 id nam...

mysql根據子節點查詢父級節點

表結構 create table t test id varchar 64 name varchar 64 parentid varchar 64 基礎資料 insert into t test id,name,parentid value 1 一級選單 0 insert into t test i...

mysql儲存及查詢億級資料

1.基本方法 1.1.正確設計索引 1.2.避免全表掃瞄 1.3.避免limit 100000000,20這樣的查詢 1.4.避免left join之類的查詢,不要將這樣的邏輯處理交給資料庫 1.5.每個表的鍵不要太多,大資料時會增加資料庫的壓力 2.資料表優化 2.1.採用分表技術 大表分小表 1...