join 更新问题

足球不是方的 2017-04-11 09:50:29


2个表数据如图,做join更新
update a set a.amount=a.amount+b.changeamount
from #a a
inner join #b b on a.mebid=b.mebid

本来结果是
1,1100
2,2100

问题:结果是怎么来的,是只更新第一条还是 都更新了一遍最后更新的第一条数据?麻烦讲解下。
...全文
323 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
足球不是方的 2017-04-12
  • 打赏
  • 举报
回复
写了个触发器,inserted里面2行数据,是每个mebid的第一条,从结果看是只更新了2条数据,取的都是mebid的第一条。原理就不知道了,在sqlserver下面可以有这种join 的更新,oracle下不行。
xiaoxiangqing 2017-04-11
  • 打赏
  • 举报
回复
这个更新如果有多笔符合条件,是随机的。
Tiger_Zhao 2017-04-11
  • 打赏
  • 举报
回复
每条a记录都只用一条b记录进行更新,至于关联那一条b,属于不可预期部分。
参考
[Quote=SQL Server 2005 联机丛书:]UPDATE (Transact-SQL)
C. 将 UPDATE 语句用于来自其他表的信息
USE AdventureWorks;
GO
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader AS so
ON sp.SalesPersonID = so.SalesPersonID
AND so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader
WHERE SalesPersonID =
sp.SalesPersonID);
GO


上一个示例假定在特定日期只记录指定销售人员的一笔销售业务,并假定更新信息是最新的。如果在同一天中可以记录指定销售人员的多笔销售业务,所示的示例将不能正常运行。该示例运行时没有错误,但是每个 SalesYTD 值只能用一笔销售数据更新,而不管那一天实际发生了多少笔销售业务。这是因为一条 UPDATE 语句永远不会对同一行更新两次。[/Quote]
卖水果的net 2017-04-11
  • 打赏
  • 举报
回复
楼主把 表 a ,加一个 time 字段,update 也把这个字段加进去,看看哪个时间 问题:结果是怎么来的,是只更新第一条还是 都更新了一遍最后更新的第一条数据?麻烦讲解下。 在表 a 上加个触发器,记录一下,看看记录过程
薛定谔的DBA 2017-04-11
  • 打赏
  • 举报
回复
update a  set a.amount=a.amount+b.changeamount
output deleted.*,inserted.*		--此处输出更新前后的值,可知更改了多少
from #a a
inner join #b b on a.mebid=b.mebid
  • 打赏
  • 举报
回复
貌似 你用select * from b 这个查询 的顺序,后面update时 有多条会用到查询时那种顺序的 第一条
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧