猿问

基于ID匹配的从一个表到另一个表的SQL更新

基于ID匹配的从一个表到另一个表的SQL更新

我有一个数据库account numberscard numbers..我将这些与文件匹配到update任何卡号的帐号,使我只工作帐户号码。

我创建了一个视图,将表链接到帐户/卡数据库,以返回Table ID以及相关的帐号,现在我需要更新那些ID与帐号匹配的记录。

这是Sales_Import表,其中account number需要更新字段:

LeadID  AccountNumber147         5807811235150         5807811326185         7006100100007267039

这是RetrieveAccountNumber表中,我需要从以下几个方面进行更新:

LeadID  AccountNumber147         7006100100007266957150         7006100100007267039

我试过以下几种方法,但到目前为止没有运气:

UPDATE [Sales_Lead].[dbo].[Sales_Import] SET    [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber 
                          FROM   RetrieveAccountNumber 
                          WHERE  [Sales_Lead].[dbo].[Sales_Import]. LeadID = 
                                                RetrieveAccountNumber.LeadID)

它将卡号更新为帐户号,但帐户号将被替换为NULL


慕姐8265434
浏览 786回答 3
3回答

慕哥6287543

我相信UPDATE FROM带着JOIN将有助于:MS SQLUPDATE     Sales_ImportSET     Sales_Import.AccountNumber = RAN.AccountNumberFROM     Sales_Import SIINNER JOIN     RetrieveAccountNumber RANON      SI.LeadID = RAN.LeadID;MySQL和MariaDBUPDATE     Sales_Import SI,     RetrieveAccountNumber RANSET     SI.AccountNumber = RAN.AccountNumberWHERE     SI.LeadID = RAN.LeadID;

喵喔喔

将内容从一个表复制到另一个表的简单方法如下:UPDATE table2  SET table2.col1 = table1.col1, table2.col2 = table1.col2,...FROM table1, table2  WHERE table1.memberid = table2.memberid还可以添加条件以获得特定数据的复制。

呼唤远方

对于SQLServer 2008+使用MERGE而不是所有权UPDATE ... FROM语法有一定的吸引力。除了作为标准SQL(因此更易于移植),如果源端存在多个连接行(因此在更新中使用多个可能的不同值),它也会引发一个错误,而不是最终结果是不确定的。MERGE INTO Sales_Import   USING RetrieveAccountNumber      ON Sales_Import.LeadID = RetrieveAccountNumber.LeadIDWHEN MATCHED THEN    UPDATE        SET AccountNumber = RetrieveAccountNumber.AccountNumber;不幸的是,选择使用哪一种可能不会完全归结为首选的风格。执行MERGE在SQLServer中,出现了各种各样的错误。亚伦·伯特兰汇编了一份名单这里报道的.
随时随地看视频慕课网APP
我要回答