带连接的 Athena 查询
Athena query with joins
我正在尝试 运行 查询 Athena,但它的行为与预期不符:
select distinct aw.year, aw.month, aw.day
from aw
left join f on aw.c1= f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
and aw.year = '2022'
and aw.month = '2'
and aw.day = '5'
我期待这个查询 return 2022, 2, 5 但它是 return 年、月和日的其他几个值。下面的查询工作正常,returns 只有 2022、2、5。
select distinct aw.year, aw.month, aw.day
from aw
join f on aw.c1= f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
and aw.year = '2022'
and aw.month = '2'
and aw.day = '5'
问题是当我添加 left join 但我也添加了所需年月日的文件管理器。我在逻辑上做错了什么?
您似乎混淆了 ON
中的条件与 WHERE
中的条件。
您的 left join
查询 returned 行,其中 aw
有其他值,因为您提供了如何 join 之间的行的条件table秒。它不限制来自 'left' table.
的行
如果您只想 return LEFT table (aw
) 日期匹配 2022-02-05
的行,那么您应该将这些条件放在 WHERE
:
select distinct aw.year, aw.month, aw.day
from aw
left join f on aw.c1 = f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
where aw.year = '2022'
and aw.month = '2'
and aw.day = '5'
我正在尝试 运行 查询 Athena,但它的行为与预期不符:
select distinct aw.year, aw.month, aw.day
from aw
left join f on aw.c1= f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
and aw.year = '2022'
and aw.month = '2'
and aw.day = '5'
我期待这个查询 return 2022, 2, 5 但它是 return 年、月和日的其他几个值。下面的查询工作正常,returns 只有 2022、2、5。
select distinct aw.year, aw.month, aw.day
from aw
join f on aw.c1= f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
and aw.year = '2022'
and aw.month = '2'
and aw.day = '5'
问题是当我添加 left join 但我也添加了所需年月日的文件管理器。我在逻辑上做错了什么?
您似乎混淆了 ON
中的条件与 WHERE
中的条件。
您的 left join
查询 returned 行,其中 aw
有其他值,因为您提供了如何 join 之间的行的条件table秒。它不限制来自 'left' table.
如果您只想 return LEFT table (aw
) 日期匹配 2022-02-05
的行,那么您应该将这些条件放在 WHERE
:
select distinct aw.year, aw.month, aw.day
from aw
left join f on aw.c1 = f.c1
and aw.c2 = f.c2
and aw.c3 = f.c3
where aw.year = '2022'
and aw.month = '2'
and aw.day = '5'