CROSS JOIN
更新時(shí)間:
通過(guò)CROSS JOIN
和UNNEST
,將一行中包含的多個(gè)逗號(hào)分隔的值轉(zhuǎn)換為多行,從而將一行數(shù)據(jù)轉(zhuǎn)化為多行。
數(shù)組結(jié)構(gòu)轉(zhuǎn)多行
將某一列轉(zhuǎn)成數(shù)組,然后轉(zhuǎn)成多行,示例如下:
####建庫(kù)
CREATE DATABASE mydb;
USE mydb;
###建表
CREATE TABLE test(
userid INT
,user_name VARCHAR
,product VARCHAR
) distributed by hash(userid);
###插入兩行測(cè)試數(shù)據(jù)
INSERT INTO test VALUES
(1,'aaa','cat,mat,bat'),(2,'bbb','dog,pog,fog');
####查詢數(shù)據(jù),產(chǎn)品列轉(zhuǎn)行,其中temp_table為臨時(shí)表名可以更換,col為返回列名
SELECT userid, col
FROM (select userid, split(product,',') as numbers_array from test)
CROSS JOIN UNNEST(numbers_array) as temp_table(col);
###查詢結(jié)果
userid col
1 cat
1 mat
1 bat
2 dog
2 pog
2 fog
文檔內(nèi)容是否對(duì)您有幫助?