Hive 在配置单元中使用左外部联接或存在的位置进行子查询
我正在尝试执行多个嵌套子查询。首先查找带有角色Person的小写名称,然后查找这些人拥有的会话ID。有了这个会话ID列表,我想根据这些会话ID中的所有结果过滤原始查询 我能够让子查询自己工作,并生成会话id列表,我尝试在子查询中使用where session_id,但这不起作用。我也尝试过执行类似于where exists或left-outer-join的操作,但我无法让它们中的任何一个正常工作。在left-outer-join之后,保留您写入M的所有查询的别名,然后再次运行查询 尝试运行以下查询:Hive 在配置单元中使用左外部联接或存在的位置进行子查询,hive,hiveql,Hive,Hiveql,我正在尝试执行多个嵌套子查询。首先查找带有角色Person的小写名称,然后查找这些人拥有的会话ID。有了这个会话ID列表,我想根据这些会话ID中的所有结果过滤原始查询 我能够让子查询自己工作,并生成会话id列表,我尝试在子查询中使用where session_id,但这不起作用。我也尝试过执行类似于where exists或left-outer-join的操作,但我无法让它们中的任何一个正常工作。在left-outer-join之后,保留您写入M的所有查询的别名,然后再次运行查询 尝试运行以下查
这成功了!非常感谢你。你能解释一下为什么我需要保留别名吗?写子查询的规则之一是子查询必须始终出现在括号内,你可以将子查询嵌入另一个子查询中。你可以有你需要的任意级别。当我们保留别名nameM时,所有子查询都将被视为表M。太棒了,谢谢您的解释。这更清楚了!
select
U.session_id,
U.session_date,
U.email
from data.usage U
left outer join
select
distinct M.session_id
from data.usage M
where email like '%gmail.com%'
and data_date >= '20180101'
and name in
(
select
lower(name)
from data.users
where role like 'Person%'
and isactive = TRUE
and data_date = '20180412'
)
on U.session_id = M.session_id
select
U.session_id,
U.session_date,
U.email
from data.usage U
left outer join
(select
distinct M.session_id
from data.usage M
where email like '%gmail.com%'
and data_date >= '20180101'
and name in
(
select
lower(name)
from data.users
where role like 'Person%'
and isactive = TRUE
and data_date = '20180412'
))M
on U.session_id = M.session_id