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 │ [] │
└─────────────┴─────────┘