Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join 如何连接配置单元中的两个表。_Join_Hadoop_Hive_Hiveql - Fatal编程技术网

Join 如何连接配置单元中的两个表。

Join 如何连接配置单元中的两个表。,join,hadoop,hive,hiveql,Join,Hadoop,Hive,Hiveql,我有两个表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

我有两个表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;
从v3中选择v3.*、t3.*
参加
B t3
其中v3.id=t3.no和
v3.sdate=t3.actualdate
限值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;
从v3中选择v3.*、t3.*
参加
B t3
打开(v3.id=t3.no和
v3.sdate=t3.actualdate)
限值1;
不幸的是,配置单元不支持equijoin。有没有一种方法可以使用join实现上述功能?

您可以使用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.*、t3.*
参加
B v3
打开(v3.id=t3.no)
其中v3.sdate=t3.actualdate
限值1;
注意:t3和v3别名已互换。

您可以使用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.*、t3.*
参加
B v3
打开(v3.id=t3.no)
其中v3.sdate=t3.actualdate
限值1;

注意:您的t3和v3别名被互换。

当您尝试进行联接时,您会遇到什么错误?当我使用“ON”子句时,我得到的错误是:失败:语义分析中的错误:在联接“actualdate”中遇到左别名和右别名。当我使用“WHERE”子句时,它不会抛出错误,但不会得到任何结果。但是,如果我从“ON”子句中删除部分“and v3.sdate=t3.actualdate”,它工作正常,但没有条件检查。当您尝试进行连接时,会出现什么错误?当我使用“ON”子句时,我得到的错误是:失败:语义分析中的错误:在连接“actualdate”中遇到左别名和右别名。当我使用“WHERE”子句时,它不会抛出错误,但不会得到任何结果。但如果我从“ON”子句中删除“and v3.sdate=t3.actualdate”部分,它工作正常,但没有条件检查。