首页 > 解决方案 > 大查询:当 1 个表包含用户 ID 数组时,如何在用户 ID 上连接 2 个表?

问题描述

StackOverflow 上已经发布了一些类似的答案,但他们没有解决这个特定案例或涉及我无法理解的查询,因为我刚刚开始了我的第一个 SQL 相关职位。

这是我第一次尝试在我以数组的形式加入的一个表中加入具有列值的表。在尝试解决我自己的问题后,我遇到了以下错误:No matching signature for operator = for argument types: ARRAY<INT64>, STRING.

我有 2 个表格,如下所示:

表格1:

team_id     user_id
   1       [1, 2, 3]
   2       [4, 5, 6]
   3       [7, 8, 9]
   4      [10, 11, 12]

表 2:

user_id    value
   2         10
   5         20
   7         30
   12        40

我想通过让表2分析表1的数组中是否有匹配的user_id来将表2加入表1。如果有,则根据常见的user_id加入并输出结果如下:

期望的输出

team_id  user_id  value
1          2       10
2          5       20
3          7       30
4          12      40

提前感谢您分享您的知识!

标签: sqlarraysgoogle-bigqueryinner-join

解决方案


您可以加入unnest()

select t1.team_id, t2.user_id, t2.value
from table1 t1
inner join table2 t2 on t2.user_id in unnest(t1.user_id)

推荐阅读