数据库
首页 > 数据库> > mysql-查询另一个表中列出的日期

mysql-查询另一个表中列出的日期

作者:互联网

我想选择两个日期之间的表中的某些行(在单独的表中找到).我的表和查询的详细信息可以在前面的问题here中找到(我现在对如何在HIVE / hiveQL中执行此操作感兴趣).从我当前的查询来看,它运行了很长时间,然后似乎无限期挂起,而当我对日期进行硬编码时,它很快就会完成.表和查询以供参考:

VISIT_INFO,具有以下列:

pers_key - unique identifyer for each person
pers_name - name of person
visit_date - date at which they visited a business

VALID_DATES,包含以下列:

condition - string
start_date - date
end_date - date 

和查询本身:

select pers_key, pers_name from VISIT_INFO a
CROSS JOIN
(select start_date, end_date from VALID_DATES where condition = 'condition1') b
WHERE (a.visit_date >= b.start_date and a.visit_date <= b.end_date)
GROUP BY a.pers_key

值得注意的是Im使用HIVE 0.12,因此摆脱联接并将select语句放在WHERE子句中是不可能的.我想知道此查询到底有什么问题,或者是什么原因导致它失败.任何有关如何改善这一点的建议将不胜感激.

解决方法:

尝试:

select pers_key, pers_name 
from VISIT_INFO a 
join 
valid_dates b
WHERE a.visit_date BETWEEN b.start_date AND b.end_date
GROUP BY pers_key, pers_name;

从Hive 0.13开始:

select pers_key, pers_name 
from VISIT_INFO a , valid_dates b
WHERE a.visit_date BETWEEN b.start_date AND b.end_date
GROUP BY pers_key, pers_name;

标签:hiveql,hive,query-optimization,sql,mysql
来源: https://codeday.me/bug/20191120/2040341.html