我有两个表 A 和 B,它们都具有以下结构。
// Table A
Name Age actualdate no
// Table B
City sdate edate id
我希望使用 JOIN 获取 A 和 B 中的所有字段,其中 id = no 且 sdate =actualdate。
我尝试如下使用 where 子句,但它不起作用。
select v3.*, t3.* from A v3
JOIN
B t3
where v3.id = t3.no and
v3.sdate <= t3.actualdate and
v3.edate >= t3.actualdate
limit 1;
使用 On 子句:
select v3.*, t3.* from A v3
JOIN
B t3
ON ( v3.id = t3.no and
v3.sdate <= t3.actualdate and
v3.edate >= t3.actualdate )
limit 1;
不幸的是,Hive 不支持等值连接。有没有办法使用连接来实现上述目的?
您可以使用 WHERE 进行过滤,而不是在 ON 子句中使用 = 条件。
select v3.*, t3.* from A t3
JOIN
B v3
ON ( v3.id = t3.no)
WHERE v3.sdate <= t3.actualdate and
v3.edate >= t3.actualdate
limit 1;
注意:您的 t3 和 v3 别名已互换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)