将数据从SQL中具有相同表的两个不同数据库复制到临时表



我有两个数据库。一个数据库包含当年数据,另一个数据库则包含上一年数据。

我想将名为tbl_Records的表中的数据复制到临时表中,该表在数据库和临时表中都可用。我使用了内部联接。

select a.* 
into #copy 
from #temp t 
inner join Records2021..tbl_Records r on t.uniqueno = r.uniqueno
where isdeleted = 0

tbl_Records具有大约150列,并且所有列都是必需的。因此优选*

现在我需要包括上一年的数据库Records2020。我该怎么做?

使用CTE可能会有所帮助。但问题是,我需要指定相同的所有列名,这很乏味。是否有更简单的方法来实现这一点,因为我需要在针对不同表的50-60个不同存储过程中实现这一方法。

我的最终目标只是将两个数据库中的数据合并到一个临时表中。

代码尝试:

If object_id('tempdb..#copy') is not null
begin
drop table #copy
end
If object_id('tempdb..#temp') is not null
begin
drop table #temp
end;
with cte as
(
select a.* 
from #temp t 
inner join Records2021..tbl_Records r on t.uniqueno = r.uniqueno
where isdeleted = 0
union all
select a.* 
from #temp t 
inner join Records2020..tbl_Records r on t.uniqueno = r.uniqueno
where isdeleted = 0
) 
select a.* 
into #copy 
from cte   /*this does not work as I need to mention all 150 columns here.*/

我也对任何其他选择持开放态度。

DBMS:Microsoft SQL Server

您可以使用UNION ALL来解决它,但请注意#temptbl_Records表必须具有相同的结构(列和数据类型(。

SELECT 
*
INTO 
#copy
FROM (
SELECT * 
FROM #temp
UNION ALL
SELECT * 
FROM [Records2021]..[tbl_Records]
) AS tbl
WHERE 
tbl.isdeleted = 0

如果表结构不同,则对一个表使用SELECT ... INTO,对第二个表使用所需列调整INSERT INTO

相关内容

  • 没有找到相关文章

最新更新