2013-04-30 109 views
5

我需要创建一个包含n个行值的视图(或表格),这些视图来自两个具有相同结构的不同表格。例如:SQL - 在一个表/视图中合并两个表格内容

表欧洲

id name  Country 
---------------------------- 
1  Franz  Germany 
2  Alberto  Italy 
3  Miguel  Spain 

表美国

id name  Country 
---------------------------- 
1  John  USA 
2  Matthew  USA 

合并后的视图必须是这样的:

表WORLD

id name  Country 
---------------------------- 
1  John  USA 
2  Matthew  USA 
1  Franz  Germany 
2  Alberto  Italy 
3  Miguel  Spain 

这是可能的?如果是,如何?

预先感谢您的帮助,最好的问候

+1

为什么你要创建表/视图?你只是通过简单的SQL查询得到结果 – 2013-04-30 13:35:11

+1

@BhavinChauhan如果它是一个大型数据集的常见请求视图,如果他只有一个视图或表,并且已经有大型查询的结果,它可能会更有效率。 – 2013-04-30 13:39:34

回答

8

,如果你只是想产生不是试图联合查询

SELECT id,name,Country FROM dbo.Europe 
UNION 
SELECT id,name,Country FROM dbo.USA 
+0

AAAARGH工会选择!谢谢Bhavin:D – BeNdErR 2013-04-30 13:45:48

+2

为了性能目的,我建议'UNION ALL'(假设国家不能在多个表中)。为了完整起见,这里是一个小提琴演示你的解决方案。 http://sqlfiddle.com/#!5/fe7a0/1 – GarethD 2013-04-30 13:49:46

+0

@GarethD为什么结果显示欧洲人来自美国国家? – BeNdErR 2013-04-30 14:09:00

3

您可以创建工会的可重复使用的视图,像这样:

create view allcountries as select * from usa union select * from world; 

(命名为任何你代替allcountries等)

然后只是:

select * from allcountries;