oracle中除之外怎么写,sql – 除Oracle之外的RDBMS中的CONNECT BY或分层查询

Oracle提供了非常方便的功能.您可以使用以下子句创建分层查询(递归行为):

CONNECT BY [NOCYCLE] {condition [AND condition...]} [START WITH condition]

如下所述:

我想知道,有没有其他已建立的RDBMS支持等效或类似的语法?或者可以使用常规SQL一般模拟这样的递归行为?

我希望能够模拟的一个很好的例子是(取自Oracle文档):

SELECT LPAD(' ', 2 * (LEVEL-1)) || last_name org_chart,

employee_id, manager_id, job_id

FROM employees

START WITH job_id = 'AD_VP'

CONNECT BY PRIOR employee_id = manager_id;

导致:

ORG_CHART EMPLOYEE_ID MANAGER_ID JOB_ID

------------------ ----------- ---------- ----------

Kochhar 101 100 AD_VP

Greenberg 108 101 FI_MGR

Faviet 109 108 FI_ACCOUNT

Chen 110 108 FI_ACCOUNT

Sciarra 111 108 FI_ACCOUNT

Urman 112 108 FI_ACCOUNT

Popp 113 108 FI_ACCOUNT

Whalen 200 101 AD_ASST

Mavris 203 101 HR_REP

Baer 204 101 PR_REP

Higgins 205 101 AC_MGR

Gietz 206 205 AC_ACCOUNT

De Haan 102 100 AD_VP

Hunold 103 102 IT_PROG

Ernst 104 103 IT_PROG

Austin 105 103 IT_PROG

Pataballa 106 103 IT_PROG

Lorentz 107 103 IT_PROG

LEVEL伪列和用它实现的缩进对我来说并不那么重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值