MySql不寫儲存過程一步得出頂級節點的方法

2021-08-18 22:26:09 字數 583 閱讀 1418

string sql = "select t2.channel_id, t2.channel_path from ( select @r as _id, (select @r \\:= parent_id" +

" from jc_channel where channel_id = _id) as parent_id, @l \\:= @l + 1 as lvl " +

" from (select @r \\:= "+channel_id+", @l \\:= 0) vars, jc_channel h where @r <> 0) t1 join jc_channel t2 " +

" on t1._id = t2.channel_id order by t1.lvl desc;";

在這段sql中jc_channel即為需要查詢頂級節點的表,該表中的channel_id存在有父級節點parent_id這一屬性,當channel_id有多重父節點時,使用該語句即可得出頂級節點,頂級節點經過排序後在最頂層。

ps:**中的\\:=等價於:=,之所以要加\\是因為使用hibrate查詢時,查詢語句不能識別:=這一賦值寫法,需要轉義。

oracle一步接一步(5) 儲存過程

由於時間有限。現在只是拿出兩個最基本的儲存過程的例子。oracle儲存結構語法也許以後會補上。1.兩個最基本的儲存過程的例子 建表並插入兩行資料 drop table temp create table temp id int insert into temp values 1 insert int...

一步一步寫演算法(開篇)

演算法是計算機的生命。沒有演算法,就沒有軟體,計算機也就成了乙個冰冷的機器,沒有什麼實用價值。很多人認為,演算法是數學的內容,學起來特別麻煩。我們不能認為這種觀點是錯誤的。但是我們也知道,軟體是一種復合的技術,如果乙個人只知道演算法,但是不能用程式語言很好地實現,那麼再優秀的演算法也不能發揮作用。乙...

一步一步寫演算法(開篇)

演算法是計算機的生命。沒有演算法,就沒有軟體,計算機也就成了乙個冰冷的機器,沒有什麼實用價值。很多人認為,演算法是數學的內容,學起來特別麻煩。我們不能認為這種觀點是錯誤的。但是我們也知道,軟體是一種復合的技術,如果乙個人只知道演算法,但是不能用程式語言很好地實現,那麼再優秀的演算法也不能發揮作用。乙...