我正在尝试编写一个将执行以下操作的SQL查询。
我有两个数据库,一个是databaseA,另一个是databaseB。
他们都有类似的表名为zone。
两个名为zone的表都有不同的列数,但是有些列是相同的。我现在唯一关注的列是ID和minclip。
我需要一个查询,它将获取databaseA的区域min_clip的值,并将其插入到databaseB的区域minclip中的每一行,但仅当两个数据库的ID值匹配时才会这样。
所以它需要来自databaseA.zone的minclip值并将其插入到databaseB.zone中,其中两者的id列匹配。
答案 0 :(得分:0)
据我了解,基本上你想从databaseB.zone
更新databaseA.zone
中的值,而不是插入:
update databaseB.zone
set minclip=(select databaseA.zone.minclip
from databaseA.zone where databaseA.zone.ID=databaseB.zone.ID)
考虑到数据被截断的问题,让我们尝试从databaseA.zone
中的值生成SQL语句:
select concat('update databaseB.zone
set minclip=',minclip,' where ID=',ID,';') from databaseA.zone
获取此SQL的输出并运行它。
将会有一堆零记录更新,但我不会开始与databaseA.zone
和databaseB.zone
交叉以保持简单。