如何使用 DB2 中表的列值更新 DB1 中表的列值?
Posted
技术标签:
【中文标题】如何使用 DB2 中表的列值更新 DB1 中表的列值?【英文标题】:How can I update a column value of a table in DB1 with a column value from a table in DB2? 【发布时间】:2021-11-21 21:34:08 【问题描述】:我正在尝试在来自不同数据库的 2 个表之间执行简单的 SQL 更新。挑战在于,为了更新值,它必须满足某些条件。我已经使用连接语句来满足条件,当我去测试表 B 中的值时,它没有被更新到表 A 中。这是我到目前为止所做的。
USE [dbo]
GO
CREATE PROCEDURE
(
@User_ID = INT,
@Batch_ID VARCHAR(32)
)
DECLARE @locid int
SELECT @locid
FROM OtherDB.dbo.User AS UL
WHERE UL.User_ID = @User_Id
and User_Type = 1;
UPDATE M
SET
M.Number = W.Number
FROM dbo.tableA AS W
JOIN dbo.tableB AS B ON B.ID = W.ID
JOIN dbo.tableC AS C ON C.ToolA = B.ToolA
JOIN dbo.tableD as D ON D.Zone = W.Zone_Name
JOIN OtherDB.dbo.tableMax AS M ON M.LID = @locid
AND M.Tool = C.Other_Tool
AND M.Zone = D._Other_Zone
AND M.Station = W.Station
WHERE W.User_ID = @User_ID
AND W.Batch_ID = @Batch_ID
SET NOCOUNT OFF;
【问题讨论】:
mysql SQL Server - 请更正您的标签。 对不起,谢谢 【参考方案1】:更新语句是更新otherDB中的表M,而不是当前数据库中的表A。
你可以修改存储过程为
Update A
Set A.Number = W.Number
From dbo.tableA A
....
【讨论】:
Josh Potts 谢谢,有没有办法重新排列连接以保持我的条件比较? 内部连接的顺序在逻辑上不会改变任何东西。只需按照建议更改 UPDATE 语句第一行中的别名(尽管请注意,Josh 将 TableA 的别名从“W”更改为相当明显的“A”值。同时删除更新列的别名 - 这是多余的. 我想你想用 M.Number 中的值设置 A 中的 Number - Josh 声明中的一个意外错字。隐秘的别名是一个坏习惯。 @SMor 是对的,你可以更改更新语句。以上是关于如何使用 DB2 中表的列值更新 DB1 中表的列值?的主要内容,如果未能解决你的问题,请参考以下文章
根据 SQL Server 中表中的列值从两个表中获取一个新表:
如何计算 Spark SQL(Databricks)中表中的列数?