在查詢列表中使用PRIOR操作
對於樹形查詢中的PRIOR操作,一般都是用在CONNECT BY語句中,而這個PRIOR操作其實在SELECT的欄位列表中也是可以使用的。
看一個簡單的例子:
SQL> create table t (id number, parent_id number, name varchar2(30));
Table created.
SQL> insert into t values (1, null, 'a');
1 row created.
SQL> insert into t values (2, 1, 'b');
1 row created.
SQL> insert into t values (3, 1, 'c');
1 row created.
SQL> insert into t values (4, 2, 'd');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t;
ID PARENT_ID NAME
---------- ---------- ---------------
1 a
2 1 b
3 1 c
4 2 d
SQL> select id, parent_id, name
2 from t
3 start with id = 1
4 connect by prior id = parent_id;
ID PARENT_ID NAME
---------- ---------- ---------------
1 a
2 1 b
4 2 d
3 1 c
這是樹形查詢中最長使用PRIOR操作的情況,在CONNECT BY語句中使用。
不過PRIOR還可以用在SELECT列表中:
SQL> select id, parent_id, prior id p_id, name, prior name p_name
2 from t
3 start with id = 1
4 connect by prior id = parent_id;
ID PARENT_ID P_ID NAME P_NAME
---------- ---------- ---------- --------------- ---------------
1 a
2 1 1 b a
4 2 2 d b
3 1 1 c a
除了普通的列,PRIOR甚至還可以用於SYS_CONNECT_BY_PATH函式:
SQL> select
2 id,
3 parent_id,
4 prior id p_id,
5 sys_connect_by_path(name, '/') name,
6 prior sys_connect_by_path(name, '/') p_name
7 from t
8 start with id = 1
9 connect by prior id = parent_id;
ID PARENT_ID P_ID NAME P_NAME
---------- ---------- ---------- --------------- ---------------
1 /a
2 1 1 /a/b /a
4 2 2 /a/b/d /a/b
3 1 1 /a/c /a
利用這個功能,可以使得樹形查詢實現很多更靈活的功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-613052/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中connect by prior實現遞迴查詢Oracle遞迴
- Java中查詢列表的峰值元素Java
- mybatis查詢列表MyBatis
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- 在 with 查詢中只查詢個別欄位
- 【--SQL基礎-->層次化查詢(START BY ... CONNECT BY PRIOR)】SQL
- Java中使用流Stream查詢列表中的最大和最小日期Java
- Oracle 常用SQL查詢列表OracleSQL
- sqlalchemy在python中的使用(關於查詢)二SQLPython
- 在 CSS 中使用特徵查詢CSS特徵
- laravel with 查詢列表限制條數Laravel
- BLOB和CLOB的區別以及在ORALCE中的插入和查詢操作
- 在 CSS 中使用功能查詢CSS
- Hive高階操作-查詢操作Hive
- 在Linux中,如何使用grep命令查詢檔案中的內容?Linux
- SQLAlchemy in 查詢空列表問題分析SQL
- AntDesignBlazor示例——列表查詢條件Blazor
- 在Laravel 5.6中 使用Swoole的協程資料庫查詢Laravel資料庫
- 在Django中查詢重複專案Django
- Django 2.0 模型層中 QuerySet 查詢操作介紹Django模型
- python中的列表操作Python
- Java 中如何使用 SQL 查詢 TXTJavaSQL
- 為何在查詢中索引未被使用索引
- RAC:在子查詢使用gv$檢視,有時查詢不出資料
- 程式碼:用車申請-列表查詢
- Mysql慢查詢操作梳理MySql
- 查詢holder的操作
- 閃回版本查詢操作
- 常見的查詢操作
- 在KYLIN中執行查詢報錯
- 在 Linux 中查詢 CPU 的核數Linux
- 在資料庫中查詢關鍵字資料庫
- 在LoadRunner中查詢和替換字串字串
- [zt] CBO在查詢中如何計算成本
- 在檔案上使用 SQL 查詢的示例SQL
- flowable的查詢操作和刪除操作
- 【小乾貨】一般的在迴圈中避免查詢資料庫的操作資料庫
- oracle樹中prior的用法Oracle