我对左外连接有一个问题,我的查询有点复杂。试图寻找,但没有找到任何线索。这是由于添加了WARE子句而发生的。
下面的查询未按预期工作。
SELECT count(*) from
BN_DATA_TEMP.EDS_DELIVERYITEM_GBQ_SAMPLE_DATA A
LEFT OUTER JOIN BN_DATA_TEMP.TBL_EDS_DELIVERYITEMS_DATES B
on (
to_Date(substr(A.LASTUPDATEDTIME,1,10)) = '2020-05-31'
and to_Date(substr(B.LASTUPDATEDTIME,1,10)) = '2020-05-31'
and A.deliveryid = B.deliveryid )
where B.deliveryid is null;
试图在a中获取记录,但在b中没有。但计数是非常不同的,这是错误的。我只需要考虑两个表中2020-05-31的日期。
修改如下,它给出了正确的结果。
select count(*) from
(SELECT * from
BN_DATA_TEMP.EDS_DELIVERYITEM_GBQ_SAMPLE_DATA where to_Date(substr(LASTUPDATEDTIME,1,10)) = '2020-05-31' ) A
LEFT OUTER JOIN
(select * from
BN_DATA_TEMP.TBL_EDS_DELIVERYITEMS_DATES where to_Date(substr(LASTUPDATEDTIME,1,10)) = '2020-05-31' ) B
on A.deliveryid = B.deliveryid
where B.deliveryid is null;
我从来没有使用过太多的左外连接来进行数据验证。所以我想在这里发帖,学习同样的东西。
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!