Mysql 通过从另一个数据库获取值来更新行

Mysql 通过从另一个数据库获取值来更新行,mysql,sql,database,Mysql,Sql,Database,通过从另一个数据库获取值来更新行的最佳过程是什么 下面是我使用的查询 UPDATE live_client_production.measurement_attachment t1 INNER JOIN live_client_uk.measurement_attachment t2 ON t2.active = t1.active SET t1.content = t2.content where t1.id=97 AND t2.id=1; 对于下一个要更新的值,给出了t1

通过从另一个数据库获取值来更新行的最佳过程是什么

下面是我使用的查询

UPDATE live_client_production.measurement_attachment t1
INNER JOIN live_client_uk.measurement_attachment t2
   ON t2.active = t1.active
  SET t1.content = t2.content 
where t1.id=97 
  AND t2.id=1;
对于下一个要更新的值,给出了
t1.id
t2.id
的值

UPDATE live_client_production.measurement_attachment t1 
 INNER JOIN live_client_uk.measurement_attachment t2 ON t2.active = t1.active 
   SET t1.content = t2.content 
 where t1.id=98 
   AND t2.id=2;
有没有办法设置一个限制或范围,使
t1.id
t2.id
自动递增到某个范围

在mysql中执行此操作的最佳过程是什么


我诚恳地请求您帮助我

您可能会帮我一个忙

where t1.id = (t2.id+96);
但这让我很紧张,因为它假设两个ID之间总是96。如果您可以让id相同,使两个表中的id都是98,或者两个表中都有一些代码将它们标识为用于相同数据,我会更舒服。那你有

where t1.id = t2.id


可以过滤Id列的相对差异,并设置天花板

差不多

WHERE t1.id=t2.id+96
AND t1.id < @SomeCeilingValue
其中t1.id=t2.id+96
和t1.id<@SomeCeilingValue

如果我正确理解这一点,则每次更新时,机器人ID应增加1

如果需要,可以只进行一次更新,并确保t1.id始终为t2.id-96

...
WHERE t1.id = t2.id-96
如果您依赖于在一个过程中迭代多个更新,那么可以使用变量,您可以对变量进行限制。例如:

set @id1 = 1;
set @id2 = 97;

while @id < 95 do

    UPDATE live_client_production.measurement_attachment t1
    INNER JOIN live_client_uk.measurement_attachment t2
    ON t2.active = t1.active
    SET t1.content = t2.content 
    where t1.id=97 
    AND t2.id=1;

    set @id1 = @id1+1;
    set @id2 = @id2+1;
end while;
set@id1=1;
设置@id2=97;
而@id<95
更新live_client_production.measurement_附件t1
内部连接实时客户端测量附件t2
在t2.active=t1.active上
设置t1.content=t2.content
其中t1.id=97
t2.id=1;
设置@id1=@id1+1;
设置@id2=@id2+1;
结束时;

执行此查询时出错错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第1行的“while@id<95 do UPDATE live_client_production.measurement_attachment t1”中使用。您必须在一个过程中运行此操作。它不能作为独立脚本工作。
set @id1 = 1;
set @id2 = 97;

while @id < 95 do

    UPDATE live_client_production.measurement_attachment t1
    INNER JOIN live_client_uk.measurement_attachment t2
    ON t2.active = t1.active
    SET t1.content = t2.content 
    where t1.id=97 
    AND t2.id=1;

    set @id1 = @id1+1;
    set @id2 = @id2+1;
end while;