我有一个包含以下内容的表:
id task_ids
1 10,15
2 NULL
3 17
我有具有此任务名称的表:
id task_name
10 a
15 b
17 c
我想生成以下输出
id task_ids task_names
1 10,15 a,b
2 null null
3 17 c
我知道这个结构不是理想的,但是这是旧表,我现在不会更改。
是否有简单的方法来获取输出?我正在使用Presto,但我认为可以使用本机sql解决此问题
您的数据模型太糟糕了,但是您可以花些力气来做自己想做的事情。数组比字符串更好,所以我只用它:
select t.id, t.task_id, array_agg(tt.task_name) as task_names
from t left join lateral
unnest(split(t.task_ids, ',')) u(task_id)
on 1=1 left join
tasks tt
on tt.task_id = u.task_id
group by t.id, t.task_id;
我手头没有Presto来测试。但是,此变体或某些较小的变体应该可以满足您的要求。