gpt4 book ai didi

sql - UNNEST 多个值?

转载 作者:行者123 更新时间:2023-12-02 03:29:42 26 4
gpt4 key购买 nike

我正在尝试用另一张 table 制作一张 table 。原始表中有一行看起来像这样:

------------------------
| col1 | col 2 | col 3 |
------------------------
| item | a,b,c | 1,2,3 |
------------------------

我正在尝试获取该行,并将其放入这样的表格中:

------------------------
| col1 | col 2 | col 3 |
------------------------
| item | a | 1 |
------------------------
| item | b | 2 |
------------------------
| item | c | 3 |
------------------------

所以基本上我试图同时 UNNEST 两个逗号分隔的行。到目前为止,我想出的最好办法是分别 UNNEST 每一列,然后尝试合并两个结果表(我也在努力解决),但理想情况下我希望一步完成。

这是我一次 UNNEST 一行的查询:

SELECT
col1, col2, col3
FROM
tableName,
UNNEST(SPLIT(col2)) AS col2

这是我尝试将 UNNEST 作为子查询进行的尝试,但它给出了大量结果:

SELECT sub.*
FROM (
SELECT
col1, col2, col3 AS col3
FROM
tableName,
UNNEST(SPLIT(col2)) AS col2
WHERE
randomCol = 'something'
) sub,
UNNEST(SPLIT(sub.col3)) AS col3

最佳答案

SQL 标准允许将多个值传递给 unnest() 函数。

所以下面的应该可以工作(在 Postgres 中也可以)

select d.col1, 
t.*
from data d
cross join unnest(string_to_array(d.col2, ','), string_to_array(d.col3, ',')) as t(col1, col2)

这也能正确处理列表中不同数量的元素。

但是,我不知道您的专有 DBMS 是否支持它。

在线示例:http://rextester.com/XPN48947

关于sql - UNNEST 多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52171246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com