sql:无法找到视图(WITH语句)

时间:2015-09-21 15:26:36

标签: mysql sql

我有三张桌子。 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也有类似的错误。无法理解为什么。它是否改变了列名? 其次,我确信我没有以最好的方式编写查询。能否请您建议如何以优化的方式编写它。

1 个答案:

答案 0 :(得分:1)

我的Sql不支持WITH子句,你可以在mysql中使用临时表,内联视图。

在您的情况下,临时表会更简单。