对Oracle SQL中的嵌套表感到困惑

问题描述

我已将图像附加到SQL查询中,在嵌套表的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行。

解决方法

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

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

CROSS JOIN意味着,您将t1的每一行与t2的每一行合并。您应该在互联网上找到许多解释。