表 X
number doc
number item
number parentItem
有数据:
1, 1000, 0
1, 1010, 1000
1, 1020, 1000
1, 2000, 0
1, 2010, 2000
表Y
number doc
number item
varchar2(16) SomeData
有数据:
1, 1000, "1000 Data"
1, 2000, "2000 Data"
我使用以下 SQL 查询从 TableY 中获取“SomeData”
select x.doc, x.item, y.SomeData from TableX x
join TableY y
on y.doc = x.doc and y.item IN (x.item, x.ParentItem)
这应该导致:
1, 1000, "1000 Data"
1, 1010, "1000 Data"
1, 1020, "1000 Data"
1, 2000, "2000 Data"
1, 2010, "2000 Data"
我的问题是:IN-Statement是按顺序评估的,还是取决于 Oracle 采用的路径?
编辑
我的意思是当 TableY 中有来自 TableX 的项目的条目(如 1000)时,该值将首先在 JOIN 中使用还是将首先使用 ParentItem?还是仅在项目上的 JOIN 失败时才完成 ParentItem 上的 JOIN ?