按主键更新另一个表oracle,SQL根据ID匹配从一个表更新到另一个表

这篇博客讨论了如何在Oracle数据库中根据主键从一个表更新另一个表的SQL语句,包括不同数据库系统的更新语法,如MS SQL、MySQL、Oracle、PostgreSQL和SQL Server。博主提供了一个通用的解决方案,即使用子查询来匹配和更新记录。
摘要由CSDN通过智能技术生成

我相信一个连接的UPDATE FROM将有助于:

MS SQL

UPDATE Sales_Import SET Sales_Import.AccountNumber = RAN.AccountNumber FROM Sales_Import SI INNER JOIN RetrieveAccountNumber RAN ON SI.LeadID = RAN.LeadID;

MySQL和MariaDB

UPDATE Sales_Import SI, RetrieveAccountNumber RAN SET SI.AccountNumber = RAN.AccountNumber WHERE SI.LeadID = RAN.LeadID;

将内容从一个表格复制到另一个表格的简单方法如下:

UPDATE table2 SET table2.col1 = table1.col1, table2.col2 = table1.col2, ... FROM table1, table2 WHERE table1.memberid = table2.memberid

您也可以添加条件来获取复制的特定数据。

对于SQL Server 2008 +使用MERGE而不是专有的UPDATE ... FROM语法有一些吸引力。

除了作为标准的SQL并因此更具可移植性之外,如果源端有多个连接的行(因此在更新中使用多个可能的不同值),而不是最终的结果是不确定的。

MERGE INTO Sales_Import USING RetrieveAccountNumber ON Sales_Import.LeadID = RetrieveAccountNumber.LeadID WHEN MATCHED THEN UPDATE SET AccountNumber = RetrieveAccountNumber.AccountNumber;

不幸的是,select使用哪一个可能不会纯粹地归结为偏爱的风格。 在SQL Server中MERGE的实现已经受到各种错误的困扰。 Aaron Bertrand在这里汇编了一份报告的清单。

似乎你正在使用MSSQL,然后,如果我没有记错,它是这样做的:

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

我有同样的问题, foo.n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值