【问题标题】:Workaround for a correlated subquery相关子查询的解决方法
【发布时间】:2021-09-14 19:59:16
【问题描述】:

我需要在不使用相关子查询的情况下运行以下连接,因为我被限制为使用 Hive 或 Presto,由于我使用了相关子查询,这两种方法都失败了。

我已将其简化为 MWE。我有一张每个用户及其 18 岁生日的表格。每次每个用户访问电影院时,我都有另一张表。我只想在用户最后一次访问我的电影院时合并。下面是适用于本机 SQL 的代码。

什么是最有效的解决方法,不需要我加入访问电影院的用户的每个实例(它太大了)。

SELECT
    people.*,
    tickets.uid
    tickets.date
FROM all_customers as people
JOIN tkting as tickets
    on people.uid = tickets.uid
    and tickets.date = (select
                            lastvisit.date
                        from tickets as lastvisit
                        where
                            lastvisit.uid = people.uid
                            and lastvisit.date < people.birthday_18
                        order by lastvisit.date asc
                        limit 1)

【问题讨论】:

    标签: hive presto correlated-subquery trino


    【解决方案1】:

    代替这个内部查询:

    SELECT lastvisit.date
    ...
    ORDER BY lastvisit.date ASC
    LIMIT 1
    

    你可以试试:

    SELECT min(lastvisit.date)
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多