【发布时间】:2014-10-31 13:30:06
【问题描述】:
总结:我需要合并数据库中相同表的记录,这些记录来自以年份命名的数据库,例如 prefix_2012、prefix_2013、prefix_2014 - 没有基于唯一 id 键的重复。数据库按年由第三方决定,我无法更改。
是否可以将其定义为视图?
详细说明:让我用下面的例子来描述我想要的更详细的解释。它返回所有记录,包括所有重复项。
SELECT
id,
a,
b
FROM prefix_2014.mytable
UNION ALL
SELECT
id,
a,
b
FROM prefix_2013.mytable
UNION ALL
id,
a,
b
FROM prefix_2012.mytable
当仅将UNION ALL 替换为UNION 时,相同的记录将被合并。 (只有当所有列中的值都相同时。我说的对吗?)
new-year数据库创建时,所有open记录都从上一年转移,上一年数据库内容被冻结。传输的记录最初在技术意义上是重复的(所有列中的值相同)。但是,相同id的传输记录的内容可能会在以后更改。
问题:基于唯一的id,如何将所有基于年份的数据库中的记录合并,以便如果记录来自较晚的年份,则以前年份的记录是被忽略为重复?这可以在没有显式循环和没有临时表的情况下完成吗?可以编写视图来做到这一点吗?
【问题讨论】:
-
表之间ID是否连续?您是否只想在这些表中使用唯一的 a、b?
-
只有 ID 是唯一的。 a 和 be 可能会改变。我只需要最新的a,b。并非所有 ID 都复制到新年。
-
您使用的是哪个数据库服务器?甲骨文? DB2?
-
@JohnSaunders:Microsoft SQL 2014。
-
最好使用标签。 “SQL”并不意味着“SQL Server”。它表示 SQL 语言。
标签: sql-server key unique union sql-server-2014