我有几个数据源,每个都提供了一些事实。为了理解全貌,我需要能够编写一个查询,将来自所有源的数据组合到一个表中。我的数据很复杂,所以我将提供一个简单的例子来尝试理解这个概念。
我给出了Table1和Table2。我需要将它们组合起来填充空白并创建主数据源(表3)。我们假设始终提供序列号。
表1(给定)
serial1 name1 city1 country1 OS1 123 pc-123 windows 7 124 pc-124 Tampa US Windows XP 125 pc-125 Sydney AU Windows 7 126 Tempe US
表2(给定)
serial2 name2 city2 country2 OS2 123 pc-123 Atlanta US 124 US Windows XP 125 126 pc-126 Windows XP
表3(我要创建的内容)
serial name city country OS 123 pc-123 Atlanta US windows 7 124 pc-124 Tampa US Windows XP 125 pc-125 Sydney AU Windows 7 126 pc-126 Tempe US Windows XP
是否有一个简单的联合,左连接,SQL的组合我可以写执行这个?我一直在寻找论坛,但找不到任何类似的东西。提前感谢您的帮助!
答案 0 :(得分:1)
如果serial
是唯一的(意味着每个序列中每个表都有0..1行,并且它们始终相关)并且您不关心冲突中的值,您可以执行以下操作: / p>
SELECT serial, MAX(name) AS name, MAX(city) AS city,
MAX(country) AS country, MAX(OS) AS OS
FROM (
SELECT serial1 AS serial, name1 AS name, city1 AS city,
country1 AS country, OS1 AS OS
FROM Table1
UNION ALL
SELECT serial2 AS serial, name2 AS name, city2 AS city,
country2 AS country, OS2 AS OS
FROM Table2
) AS x
GROUP BY serial