You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL查询FROM子句中TABLE关键字的含义是什么?

Oracle SQL中FROM子句TABLE关键字的作用

你提供的SQL代码如下:

FROM index_policy e,
TABLE (policies) p,
TABLE (p.plan_indexes) i
WHERE i.default_strategy IS NOT NULL
ORDER BY e.extract_id DESC,
e.cycle_date DESC,
contract_number,
acc_code;

代码中用到的TABLE是Oracle的集合类型转换运算符,核心作用是将集合类型的值(嵌套表、VARRAY、嵌套集合字段等)转换为可以直接查询的二维行集,这样就能把集合里的多值数据放到FROM子句中,和普通数据表做关联查询。

具体到这段代码的逻辑:

  • policies是一个集合类型的变量/字段,TABLE(policies) p会把集合里的每一个元素拆成单独的行,别名定为p,后续可以直接查询p的对应字段
  • p.plan_indexes是p对应行里存储的集合类型字段,TABLE(p.plan_indexes) i是做嵌套展开:把每一行p对应的plan_indexes集合再拆成多行,别名定为i
  • 整个FROM子句实际是完成了三个数据源的关联:普通表index_policy、展开后的policies行集、展开后的plan_indexes行集,最后过滤i里default_strategy非空的数据后做排序输出。

补充说明:这种写法是Oracle对象关系特性的标准用法,用来处理存储在列/变量中的多值集合数据,在12c及以上版本中也可以用CROSS APPLY/OUTER APPLY实现等价效果,TABLE是更早版本就支持的兼容写法。

内容的提问来源于stack exchange,提问作者user2801881

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:39:02