【问题标题】:Confused about nested tables in Oracle SQL对 Oracle SQL 中的嵌套表感到困惑
【发布时间】:2020-10-15 14:01:55
【问题描述】:

我已将图像与嵌套表的 Oracle 文档中提到的 SQL 查询以及如何访问表中的条目一起附加。但我无法理解那里使用的 SELECT 语句。有人能解释一下其中使用的 SELECT 查询的实际含义吗?Screenshot of Oracle SQL documentation on Nested Tables

创建一个包含 NESTED TABLE 列的表,

CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
NESTED TABLE col1 STORE AS col1_tab;

向表中插入数据,

INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
COMMIT;

我无法获取的 SQL 查询,

SELECT id, COLUMN_VALUE FROM nested_table t1, TABLE(t1.col1) t2;

结果显示为,

    ID COLUMN_VALUE

     1 A
     2 B
     2 C
     3 D
     3 E
     3 F

已选择 6 行。

【问题讨论】:

    标签: sql oracle nested-table


    【解决方案1】:

    语法FROM nested_table t1, TABLE(t1.col1) t2 是旧的Oracle CROSS JOIN 语法,你现在不应该使用它。写得更好

    FROM nested_table t1 
       CROSS JOIN TABLE(t1.col1) t2
    

    CROSS JOIN 意味着,您将来自t1 的每一行与来自t2 的每一行结合起来。你应该在网上找到很多解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-10
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2016-01-23
      相关资源
      最近更新 更多