Select SQL 从另一个 select 中填充缺失值的查询

Select SQL query that fill the missing value from another select

我有 table 用户 1 :

id |date
1   2018-01-01    
2   null   
3   2018-01-01    
4   null

和另一个 table 用户 2:

id |date_buy
1   2018-01-01    
1   2018-01-02    
2   2018-01-01    
2   2018-01-02    
3   2018-01-01    
4   2018-01-01

我想进行一个 select 查询,select 来自 table user1 的 ID 和日期,但是如果日期字段为空,那么它将采用最小 date_buy 为该用户填写缺失的部分。

所以我的第一个想法是: - 对第一个 table 进行简单查询 SELECT id, 来自用户1的日期

给出类似的东西:

SELECT distinct id, date 
from (SELECT id, date 
      from user1 
      UNION 
      select id, min(date_buy) as date 
      from user2 group by id) 
 where date is not null

但我很难塑造它并使其发挥作用。

在 Hive 中,我想我会这样做:

select u1.id, coalesce(u1.date, u2.min_date)
from user1 u1 left join
     (select id, min(date_buy) as min_date
      from user2
      group by id
     ) u2
     on u1.id = u2.id;

这应该有效

  select u1.id,COALESCE(u1.date, u2.min_dt) from user1 as u1 
    join 
    ( select id,MIN(date_buy) as min_dt from user2 group by id
    ) as u2 
    on u1.id=u2.id;