hive - 相关子查询的解决方法
问题描述
我需要在不使用相关子查询的情况下运行以下联接,因为我被限制为使用 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)
...
推荐阅读
- python - AWS Lambda 将最后修改的对象从 S3 复制到另一个 S3 存储桶
- node.js - 阻止某些消息的不和谐机器人
- android - getHeight() 没有得到布局的高度
- docker - 获取 https://abcd.azure.io/v2/:拨打 tcp:在 192.168.65.1:53 上查找 abcd.azure.io:没有这样的主机
- python - Python Dataframe groupby / 检查数据
- android - 音频管理器更改音量但音量控制下拉菜单不显示
- java - Java JAR:找不到或加载主类
- java - 使用堆栈在 Java 中实现 Roll 函数
- java - Vaadin TreeGrid - 内存数据有效,但数据库支持的数据无效
- image - 如何编辑课程图像的大小?