【发布时间】:2019-12-13 06:28:24
【问题描述】:
在这个问题中,我将为您创建一个示例,以便您了解我的问题。
例如,我有 2 个名为 db1 和 db2 的数据库。两个数据库都有 1 个名为 Stocks 的表,因为它位于旧数据库和新数据库之间。
db1 的库存表
StockCode | StockName |
123 | ChairA |
456 | ChairB |
789 | DeskA |
012 | DeskB |
db2 的库存表
StockCode | StockName |
abc | ChairAC |
def | ChairBD |
ghi | DeskAC |
jkl | DeskBD |
我在下面尝试过这段代码,但它重复了股票名称。我认为当我尝试将两个表连接在一起并且 db2 中的一些新股票在 db1 中不存在时会发生这种情况。所以为了匹配行数,它会复制数据。
这是代码
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
这是原始输出:
供您参考,旧数据库有 16389 个项目,新数据库有 16550 个项目,这意味着新数据库插入了新库存项目。
所以问题是如果 db2 中仅包含 db1 股票名称,如何使用 db2 股票表数据更新 db1强>股票名称?
如果 db1 股票中不存在 db2 股票,则不要将数据插入到 db1 股票表中。
这是供您尝试的示例 SQL Fiddle
【问题讨论】:
-
您的实际问题是什么?重复数据?
标签: sql sql-server