(My)SQL full join with three tables

前端 未结 3 1867
粉色の甜心
粉色の甜心 2020-12-19 11:01

I have tree tables

ID    A
-----------
1     10

ID    B
-----------
1     20
2     30

ID    C
-----------
2     40
3     50

Can anybody p

3条回答
  •  死守一世寂寞
    2020-12-19 11:38

    As far as I know there is no full outer join in MySql. So, to do what you require you should get distinct IDs in derived table and left join original tables:

    select ids.id,
           ifnull(table1.A, 0) A,
           ifnull(table2.B, 0) B,
           ifnull(table3.C, 0) C,
           ifnull(table1.A, 0) + ifnull(table2.B, 0) - ifnull(table3.C, 0) R
      from 
      (
        select id
          from table1
        union
        select id
          from table2
        union
        select id
          from table3
      ) ids
      left join table1
        on ids.id = table1.id
      left join table2
        on ids.id = table2.id
      left join table3
        on ids.id = table3.id
    

提交回复
热议问题