涉及到3个表,以pono字段作为连接,连接表a.b.c,由于3个表中都几个pono不在其他两个表里面,所以不能用 left join和right join。但是用full join就出现个问题,当两个表的pono没有匹配到一块的时候(一个有pono,有数据,一个没有pono和下面的数据),只显示了数据,pono显示成了空值。如图所示,怎么才能把pono也显示出来呢。
1、自己处理一下数据,把三个表拼起来。然后对pono字段去重复,这样pono就会有所有的内容了
2、以上面处理好的结果为基础,用pono字段去分别关联a b c这三个表就行了!!
你在select 的时候把三张表的pono都查询出来,再外套一个子查询判断一下:
select (case when ponoa is null then (case when ponob is null then ponoc else ponob end) else ponoa end) ponor from
(select a.pono ponoa,b.pono ponob, c.pono ponoc from a full join b on a.pono=b.pono full join c on a.pono=c.pono) t
full join 可以和coalesce一起使用返回第一個不為空的值