天天看點

記備忘5 - oracle Connect by與遞歸(Level用法)

Level

用法

oracle資料庫中的僞列,用于表示目前資料層級關系,必須結合connect by 一起使用

Select * from dual connect by level <5;

Connect by用法

Connect by用于表示樹形結構資料或者遞歸關系,資料行之間存在父子關系,例如同行資料的第一個字段是ID,第二個字段是parentID,parentID表示他的上級ID

sql基本文法:

SELECT ... FROM    + 表名

START WITH         + 條件1

CONNECT BY PRIOR   + 條件2

ORDER BY 字段  或 ORDER  siblings BY 字段

例子:查詢兩層樹結構資料

select level,a.* from tb_menu a

start with parent = 0

connect by   prior id = parent and level <3;

說明:

  • prior關鍵字在字段哪邊,則哪邊字段為目前行,另一邊字段為下一行比對的字段名
  • level表示目前行資料屬于哪一層(樹行結構)
  • order  siblings by 保留層次順序下,同一層次資料的排序方式