SQL-将两个表的内容合并到一个表/视图中

5
我需要创建一个视图(或表格),用来存储从两个具有相同结构的不同表格中取出的n行数值。例如:
表格Europe:
id    name        Country
----------------------------
1     Franz       Germany
2     Alberto     Italy
3     Miguel      Spain

美国表格

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

合并后的视图应该像这样: 世界
id    name        Country
----------------------------
1     John        USA
2     Matthew     USA
1     Franz       Germany
2     Alberto     Italy
3     Miguel      Spain

这是可能的吗?如果是,怎么做呢?

感谢您提前帮助,最好的问候


1
为什么要创建表/视图?你只需通过简单的SQL查询即可获得结果。 - Bhavin Chauhan
1
如果这是一个在大型数据集上常被请求的视图,那么如果他只有一个包含大查询结果的视图或表,那么可能会更有效率。@BhavinChauhan - Maggy May
2个回答

9

如果您只想得到结果,那么可以尝试使用联合查询。

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

2
出于性能考虑,我建议使用 UNION ALL(假设国家不会在多个表中出现)。为了完整起见,这里提供一个演示解决方案的 Fiddle。http://sqlfiddle.com/#!5/fe7a0/1 - GarethD
@GarethD 为什么结果显示欧洲人来自美国? - BeNdErR
1
因为我粗心地使用了你期望从world表中获得的输出来随意创建USA表。这应该是你需要的:http://sqlfiddle.com/#!5/2bc32/1 - GarethD

3
你可以这样创建一个可重用的联合视图:
create view allcountries as select * from usa union select * from world;

(你可以用任何名称替换allcountries

然后只需:

select * from allcountries;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接