使用hive left outer join的以下区别

dauxcl2d  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(320)

我对左外连接有一个问题,我的查询有点复杂。试图寻找,但没有找到任何线索。这是由于添加了WARE子句而发生的。
下面的查询未按预期工作。

  1. SELECT count(*) from
  2. BN_DATA_TEMP.EDS_DELIVERYITEM_GBQ_SAMPLE_DATA A
  3. LEFT OUTER JOIN BN_DATA_TEMP.TBL_EDS_DELIVERYITEMS_DATES B
  4. on (
  5. to_Date(substr(A.LASTUPDATEDTIME,1,10)) = '2020-05-31'
  6. and to_Date(substr(B.LASTUPDATEDTIME,1,10)) = '2020-05-31'
  7. and A.deliveryid = B.deliveryid )
  8. where B.deliveryid is null;

试图在a中获取记录,但在b中没有。但计数是非常不同的,这是错误的。我只需要考虑两个表中2020-05-31的日期。
修改如下,它给出了正确的结果。

  1. select count(*) from
  2. (SELECT * from
  3. BN_DATA_TEMP.EDS_DELIVERYITEM_GBQ_SAMPLE_DATA where to_Date(substr(LASTUPDATEDTIME,1,10)) = '2020-05-31' ) A
  4. LEFT OUTER JOIN
  5. (select * from
  6. BN_DATA_TEMP.TBL_EDS_DELIVERYITEMS_DATES where to_Date(substr(LASTUPDATEDTIME,1,10)) = '2020-05-31' ) B
  7. on A.deliveryid = B.deliveryid
  8. where B.deliveryid is null;

我从来没有使用过太多的左外连接来进行数据验证。所以我想在这里发帖,学习同样的东西。
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题