相关子查询的解决方法

问题描述

我需要在不使用相关子查询的情况下运行以下连接,因为我只能使用 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)

解决方法

代替这个内部查询:

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

你可以试试:

SELECT min(lastvisit.date)
...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...