我有三张桌子,假设
表1
表2
表3
这看起来非常奇怪三个表中有相同的字段,但是有一种情况我必须将三个表合并为一个,我主要关注的是Designation和BPS,我希望将它们合并到一个表中一个查询或存储过程,我不能应用左外连接,右外连接,也不能应用内连接,因为我想要所有三个表中的所有值,我认为会有一个存储过程可以解决我的问题。
请在这方面协助我。
答案 0 :(得分:0)
您可以使用union all
和group by
或full outer join
执行此操作。因为您有两个以上的表,union all
实际上更容易。你不清楚最终的结果,所以这可能就足够了:
select id, DDOCode, DesignationCode, BPS, Designation
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation
from table1
) union all
(select id, DDOCode, DesignationCode, BPS, Designation
from table2
) union all
(select id, DDOCode, DesignationCode, NULL as BPS, Designation
from table3
)
) t123
对于你提出的问题:
select distinct DDOCode,DesignationCode, Designation
from ((select id, DDOCode, DesignationCode, NULL as BPS, Designation
from table1
) union all
(select id, DDOCode, DesignationCode, BPS, Designation
from table2
) union all
(select id, DDOCode, DesignationCode, NULL as BPS, Designation
from table3
)
) t123;
答案 1 :(得分:0)
您可以使用UNION合并所有表,而不是松散任何行并在单独的视图中显示它们。如果你想将它们放在另一个表中,你也可以插入。
CREATE VIEW view_name AS(
SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2
UNION
SELECT * FROM TABLE3)