如何从A表中的数据更新到B表中,两个表中有相同的姓名字段。即A表有姓名字段,B表有姓名字段。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从A表中的数据更新到B表中,两个表中有相同的姓名字段。即A表有姓名字段,B表有姓名字段。相关的知识,希望对你有一定的参考价值。
例:A表: B表:
姓名 A字段 姓名 A字段
张三 1 张三 23
李四 2 李四 23
。 3 。 。
。 。 。 。
问,如何把A表中的A字段的内容代替B表中姓名相同的A字段内容。
在线等。谢谢!
set A字段=A表.A字段
from B表
left join A表
on B表.姓名=A表.姓名
参考资料:=
参考技术B update B set B.A字段=(select A.A字段 from A where A.姓名=B.姓名);经过mysql测试,运行成功。 参考技术C update
(select A.bnum ,A.newqiantity,B.qiantity from A left join B on A.bnum=B.bnum) AS C
set C.newqiantity = C.qiantity
where C.bnum =XX
从java批量更新的两个不同表中的一个表中插入max + 1
【中文标题】从java批量更新的两个不同表中的一个表中插入max + 1【英文标题】:Insert max + 1 from one table in two different table in batch update from java 【发布时间】:2016-11-30 09:41:59 【问题描述】:我需要在 2 个具有引用关系的表中自动递增值。我的要求是在两个表中插入数据:- 表 A = Rowid ,其他列 表 B = Rowid ,其他列 我需要在两个表中插入来自不同方法的数据。 目前,我采用了这种方法:- 一种。从表 A 中查询最大值并将其加 1。 湾。使用批量更新在步骤 1 中获得值的两个表中插入数据。 但是,方法的缺陷是,如果两个用户/线程同时调用此方法,它们最终可能具有相同的值,我将在表 A 上得到引用完整性错误,而表 B 将有 2 行具有相同的行 id。
我可以同步我的方法来避免这种情况,但是由于其他一些功能,我有多种不同的方法在做同样的事情。
执行此操作的理想方法是使用自动生成的列,但 DBA 不允许这样做。另外,这两个表之间的引用完整性需要由应用程序维护,DBA不允许实际约束。
我在 java 端使用 Spring jdbctemplate,在数据库端使用 DB2。但是,问题与 Poth 无关。
【问题讨论】:
请注意,我知道有很多问题看起来与此类似。但现在一个正在更新两个表,也来自外部进程。 我假设不能使用 SEQUENCE 或更高的隔离级别。对吗? @data_henrik 右 DBA 要求在应用程序代码中处理。 【参考方案1】:SELECT MAX()+1
不是为大量并发事务创建序列的可接受方式。
DBA 拒绝使用 DB2 的并发特性,例如 ISOLATION LEVEL
、IDENTITY
或 SEQUENCE
对象是不幸的。
有一些可以使用的应用解决方法:
将第一条语句包装在 FINAL TABLE
中以返回插入的值,包括为 TableA.rowid
生成的 MAX()+1。
使用准备好的语句的返回键:
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
PreparedStatement prepareStatement(String sql, String[] columnNames)
然后将返回的值应用到TableB.rowid
【讨论】:
完全同意你的看法。唉,许多人犯了这个 max + 1 的错误,而不是让系统管理自动增量并检索结果,这要归功于 final table ... 老兄把它调低一点。真的很可怜,你没有提到参照完整性。以上是关于如何从A表中的数据更新到B表中,两个表中有相同的姓名字段。即A表有姓名字段,B表有姓名字段。的主要内容,如果未能解决你的问题,请参考以下文章
SQL SERVER中,如何把一个表中的数据导入到另一个表中?
如何从 SQL Server 2005 中另一个表中的相应数据更新一个表中的数据
在EXCEL中如何将其中一个表中的数据插入另一个表中,两表中其有一有列是相同的?怎么把两个表合为一个?