带连接的 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'