加入 / union in presto 以将电子邮件保留在一栏中
join / union in presto to keep email in one column
我正在尝试快速将两个表连接在一起,
select o.email
, o.user_id
, c.email
, c.sessions
from datasource o
full join datasource2 c
on o.email = c.email
这产生:
email user_id email sessions
jeff@sessions.com 123 NULL NULL
mike@berkley.com 987 NULL NULL
jared@swiss.com 384 jared@swiss.com 14
steph@berk.com 333 NULL NULL
NULL NULL lisa@hart.com 12
这个问题是我想使用 email
对多个数据源进行多个连接,我能想到的唯一解决方法是将其用作子查询,并创建一个新列一个,如果为空,则取另一个,然后对 datasource3 执行完全连接,冲洗重复。
您想使用 COALESCE,它将选择两个值中的非空值。
COALESCE 对于很多事情都非常有用。它可以接受两个以上的值,并将 return 它获得的第一个非 NULL 值。如果所有这些都是 NULL,它将简单地 return NULL.
SELECT
COALLESCE(o.email, c.email) AS email
, o.user_id
, c.sessions
FROM datasource o
FULL JOIN datasource2 c
ON o.email = c.email
有关 COALESCE 的官方文档,请参见此处:
https://prestodb.io/docs/current/functions/conditional.html
我正在尝试快速将两个表连接在一起,
select o.email
, o.user_id
, c.email
, c.sessions
from datasource o
full join datasource2 c
on o.email = c.email
这产生:
email user_id email sessions
jeff@sessions.com 123 NULL NULL
mike@berkley.com 987 NULL NULL
jared@swiss.com 384 jared@swiss.com 14
steph@berk.com 333 NULL NULL
NULL NULL lisa@hart.com 12
这个问题是我想使用 email
对多个数据源进行多个连接,我能想到的唯一解决方法是将其用作子查询,并创建一个新列一个,如果为空,则取另一个,然后对 datasource3 执行完全连接,冲洗重复。
您想使用 COALESCE,它将选择两个值中的非空值。 COALESCE 对于很多事情都非常有用。它可以接受两个以上的值,并将 return 它获得的第一个非 NULL 值。如果所有这些都是 NULL,它将简单地 return NULL.
SELECT
COALLESCE(o.email, c.email) AS email
, o.user_id
, c.sessions
FROM datasource o
FULL JOIN datasource2 c
ON o.email = c.email
有关 COALESCE 的官方文档,请参见此处: https://prestodb.io/docs/current/functions/conditional.html