我有三张桌子。 Inbound_table,Outbound_table和Transfer_Table。我想在Mysql中对所有三个表执行完全外连接。使用以下查询:
WITH
InOut_Table as
(select *
from Inbound_Table left join Outbound_Table
on Inbound_Table.A = Outbound_Table.A
and Inbound_Table.B = Outbound_Table.B
and Inbound_Table.C = Outbound_Table.C
and Inbound_Table.D = Outbound_Table.D
UNION
select *
from Inbound_Table RIGHT join Outbound_Table
on Inbound_Table.A = Outbound_Table.A
and Inbound_Table.B = Outbound_Table.B
and Inbound_Table.C = Outbound_Table.C
and Inbound_Table.D = Outbound_Table.D
),
final_table as
(select *
from InOut_Table left join Transfer_Table
on InOut_Table.A = Transfer_Table.A
and InOut_Table.B = Transfer_Table.B
and InOut_Table.C = Transfer_Table.C
and InOut_Table.D = Transfer_Table.D
UNION
select *
from InOut_Table RIGHT join Transfer_Table
on InOut_Table.A = Transfer_Table.A
and InOut_Table.B = Transfer_Table.B
and InOut_Table.C = Transfer_Table.C
and InOut_Table.D = Transfer_Table.D
)
select *
from final_table
首先,我收到错误说" InOut_Table.D"是无效的。它无法获取InOut_Table的任何列。 A,B和C也有类似的错误。无法理解为什么。它是否改变了列名? 其次,我确信我没有以最好的方式编写查询。能否请您建议如何以优化的方式编写它。
答案 0 :(得分:1)
我的Sql不支持WITH子句,你可以在mysql中使用临时表,内联视图。
在您的情况下,临时表会更简单。