暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 选择分区名称的数据

ASKTOM 2020-08-28
513

问题描述

嗨,

我有一张带分区的表。我正在尝试在同一查询中选择数据和分区名称。我已经创建了一个part_test表,并插入了数据。它在实时SQL链接上。

想查询这样的东西,

从part_test,all_tab_partitions中选择ld_dt,ld_src,<分区名称>,并使用all_tab_partitions加入part_test以获取数据和分区名称。

非常感谢您的帮助。

谢谢,
马尼

专家解答

这应该做到

SQL> create table t
  2  partition by list ( x )
  3  ( partition p0 values (0),
  4    partition p1 values (1),
  5    partition p2 values (2)
  6  )
  7  as
  8  select mod(rownum,3) x, rownum y
  9  from dual
 10  connect by level <= 20;

Table created.

SQL>
SQL> with partitions as
  2  ( select /*+ materialize */ data_object_id, subobject_name
  3    from  user_objects
  4    where object_name = 'T'
  5    and   object_type = 'TABLE PARTITION'
  6  )
  7  select t.*, p.subobject_name
  8  from   t, partitions p
  9  where  dbms_rowid.rowid_object(t.rowid) = p.data_object_id;

         X          Y SUBOBJECT_NAME
---------- ---------- --------------------
         0          3 P0
         0          6 P0
         0          9 P0
         0         12 P0
         0         15 P0
         0         18 P0
         1          1 P1
         1          4 P1
         1          7 P1
         1         10 P1
         1         13 P1
         1         16 P1
         1         19 P1
         2          2 P2
         2          5 P2
         2          8 P2
         2         11 P2
         2         14 P2
         2         17 P2
         2         20 P2

20 rows selected.


我使用 “物化”,因为潜入数千次数据字典视图可能会很昂贵。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

暂无图片
获得了45次点赞
暂无图片
获得了4次收藏