PostgreSQL / Hive连接多个表

时间:2015-02-25 13:44:43

标签: postgresql join hive left-join

表a:

     id   value0
     101  a1
     102  a2
     103  a3

表b:

     id  value1
     101  b1
     101  b2
     101  b3

表c:

     id  value2
     101  c1
     103  c3
     103  c4

Rezult表:

     id value0 value1 value2
     101 a1    b1     0  
     101 a1    b2     0  
     101 a1    b3     0  
     101 a1    0      c1 
     102 a2    0      0
     103 a3    0      c3
     103 a3    0      c4

是否可以使用一个查询从表a,b,c生成rezult表(不创建两个表并加入它们)?也许有可能只使用左连接来实现它?

2 个答案:

答案 0 :(得分:0)

这可能会对你有帮助 -

    select t1.id, t2.id, t3.id
    from tablea t1 inner join tableb t2 on t1.id = t2.id
    inner join tablec t3 on t2.id=t3.id
    group by id

答案 1 :(得分:0)

如果您有基表,请选择该基表并对其他人执行left join。如果您的表都不能作为基表,则可以使用full join s(均作为outer joins):

select    *
from      table_a
full join table_b using (id)
full join table_c using (id)

这将选择sql NULL s,其中没有数据,但您可以使用COLAESCE(value0, 'N/A')等来选择一些默认数据。