我是SQL的新手,我正在尝试根据唯一键找到合并2个表(从2个不同来源的文件导入)的简单语句。合并需要包含行和属性,有效地合并两个模式。
我正在寻找的确切行为是:
我理解前2个可以在标准的FULL OUTER JOIN中实现,但最终会出现重复的列
我也明白前3个可以通过FULL OUTER JOIN加上管道/连接来实现,但只有在一个或另一个表中填充属性时才能实现,而不是两个
我知道T-SQL有一个合并函数,但到目前为止我只看到它在两者中有相同的属性时合并行。但是,我还没有选择将要使用的SQL的味道。
我正在寻找3种解决方案中的一种(按优先顺序排列) 1.将这4种行为组合成单个标准SQL行的方法 2.将这4种行为组合成尽可能少的标准SQL查询的方法 3.一种结合这四种行为的方法,这些行为依赖于SQL变体的特定功能,这在SQL的所有变体中都不可用
答案 0 :(得分:0)
您可以使用COALESCE
'合并'两列。
SELECT
-- id's are either the same or non existent in either table
id = COALESCE(table2.id, table1.id),
-- where the join condition is satisfied use table2's values
-- where the join condition is not satisfied use either table1's or table2's values
colN = COALESCE(table2.colN, table1.colN),
-- add columns that aren't in either table
colX = table2.colX,
colY = table1.colY
FROM table1
FULL OUTER JOIN table2
ON table1.id = table2.id