ARRAY JOIN子句
对于包含数组列的表来说是一种常见的操作,用于生成一个新表,该表具有包含该初始列中的每个单独数组元素的列,而其他列的值将被重复显示。 这是 ARRAY JOIN 语句最基本的场景。
它可以被视为执行 JOIN 并具有数组或嵌套数据结构。 类似于 arrayJoin 功能,但该子句功能更广泛。
语法:
SELECT <expr_list>
FROM <left_subquery>
[LEFT] ARRAY JOIN <array>
[WHERE|PREWHERE <expr>]
...
您只能在 SELECT 查询指定一个 ARRAY JOIN 。
ARRAY JOIN 支持的类型有:
ARRAY JOIN- 一般情况下,空数组不包括在结果中JOIN.LEFT ARRAY JOIN- 的结果JOIN包含具有空数组的行。 空数组的值设置为数组元素类型的默认值(通常为0、空字符串或NULL)。
基本 ARRAY JOIN 示例
下面的例子展示 ARRAY JOIN 和 LEFT ARRAY JOIN 的用法,让我们创建一个表包含一个 Array 的列并插入值:
CREATE TABLE arrays_test
(
s String,
arr Array(UInt8)
) ENGINE = Memory;
INSERT INTO arrays_test
VALUES ('Hello', [1,2]), ('World', [3,4,5]), ('Goodbye', []);
┌─s───────────┬─arr─────┐
│ Hello │ [1,2] │
│ World │ [3,4,5] │
│ Goodbye │ [] │
└─────────────┴─────────┘