【问题标题】:SQL - merge two tables content in one table/viewSQL - 在一个表/视图中合并两个表的内容
【发布时间】:2013-04-24 10:44:02
【问题描述】:

我需要创建一个包含 n 行值的视图(或表),这些值取自两个具有相同结构的不同表。例如:

欧洲餐桌

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

有可能吗?如果是,如何?

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

【问题讨论】:

  • 为什么要创建表/视图?你刚刚通过简单的 sql 查询得到了结果
  • @BhavinChauhan 如果它是大型数据集上经常请求的视图,那么如果他已经拥有一个包含大型查询结果的视图或表,它可能会更有效率。

标签: sql database sqlite view


【解决方案1】:

如果你只想得到结果而不是尝试联合查询

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

【讨论】:

  • 出于性能目的,我建议UNION ALL(假设国家/地区不能在多个表中)。为了完整起见,这里有一个 Fiddle 来演示您的解决方案。 sqlfiddle.com/#!5/fe7a0/1
  • @GarethD 为什么结果显示欧洲人来自美国国家?
  • 因为我使用世界表的预期输出随意创建了美国表。这应该是您需要的:sqlfiddle.com/#!5/2bc32/1
【解决方案2】:

您可以像这样创建联合的可重用视图:

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

(用你喜欢的名字代替allcountries

那么就:

select * from allcountries;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多