可以解釋HiveQL中這兩個查詢之間的區別。基本上我想從table a
過濾掉日期大於2017-05-01。第二個查詢沒有給出我預期的結果,但是第一個查詢得到了結果。我以爲他們是相當於混淆'和'過濾內部
select a.user_id
, b.user_id
, a.event_date
, b.event_date
, to_date(a.event_date)
from default.t1 as a
left join stage.t2 as b
on a.user_id = b.user_id
and a.event_date = b.event_date
where a.event_date >= '2017-05-01'
與
select a.user_id
, b.user_id
, a.event_date
, b.event_date
, to_date(a.event_date)
from default.t1 as a
left join stage.t2 as b
on a.user_id = b.user_id
and a.event_date = b.event_date
and a.event_date >= '2017-05-01'`
您正在使用'left join',所以在第一個查詢中,您將得到結果,其中'b.event_date'可以爲null,然後篩選最終結果....在第二個日期條件中在連接中,所以你確保首先得到正確的數據....這是我的理解,但是,有人可以得到更好的解釋 – Hackerman