首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用来自不同数据库的新表数据更新旧表数据

用来自不同数据库的新表数据更新旧表数据
EN

Stack Overflow用户
提问于 2019-12-13 06:28:24
回答 2查看 68关注 0票数 1

在这个问题中,我将为您创建一个示例,以便您能够理解我的问题所在。

例如,我有两个数据库,名为db1db2。这两个数据库都有一个名为Stocks的表,因为它位于旧数据库和新数据库之间。

DB1的股票表

代码语言:javascript
复制
StockCode | StockName |
   123    |   ChairA  |
   456    |   ChairB  |
   789    |   DeskA   |
   012    |   DeskB   |

db2的股票表

代码语言:javascript
复制
StockCode | StockName |
   abc    |   ChairAC |
   def    |   ChairBD |
   ghi    |   DeskAC  |
   jkl    |   DeskBD  |

我已经尝试过下面的代码,但是它重复了股票的名称。我认为,当我试图将两个表连接在一起,而db2中的一些新股票在db1中不存在时,就会出现这种情况。因此,为了匹配行数,它将复制数据。

,这是代码

代码语言:javascript
复制
SELECT 
   oldstock.StockCode as oldCode, 
   oldstock.StockName as oldName,
   newstock.StockCode as newCode, 
   newstock.StockName as newName
FROM [db1].[dbo].[Stocks] AS oldstock
INNER JOIN [db2].[dbo].[Stocks] AS newstock
ON oldstock.StockName LIKE '%'+newstock.StockName+'%'
ORDER BY StockCode ASC

这是最初的输出:

作为您的信息,旧db有16389项,新db有16550项,这意味着新db插入了新的股票项。

那么问题是,如果只有db1包含在db2股票名中,那么如何使用db2股票表数据更新db1

如果db2股票不存在于db1股票中,则不要将数据插入db1股票表。

这是您试用SQL Fiddle的示例

EN

回答 2

Stack Overflow用户

发布于 2019-12-13 06:32:55

您可以尝试将当前的内部联接选择查询放置到CTE中,然后更新该CTE:

代码语言:javascript
复制
WITH cte AS (
    SELECT 
        oldstock.StockCode as oldCode, 
        oldstock.StockName as oldName,
        newstock.StockCode as newCode, 
        newstock.StockName as newName
    FROM [db1].[dbo].[Stocks] AS oldstock
    INNER JOIN [db2].[dbo].[Stocks] AS newstock
        ON oldstock.StockName LIKE '%' + newstock.StockName + '%' AND
           oldstock.StockName <> newstock.StockName
)

UPDATE cte
SET
    oldCode = newCode,
    oldName = newName;
票数 1
EN

Stack Overflow用户

发布于 2019-12-13 06:36:58

使用Join

代码语言:javascript
复制
UPDATE db1
SET db1.oldCode = db2.newCode,    db1.oldName = db2.newName
FROM [db1].[dbo].[Stocks] AS db1 JOIN [db2].[dbo].[Stocks] AS db2
        ON db1.StockName LIKE '%' + db2.StockName + '%'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59317238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档