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

时间:2014-08-07 14:23:31

标签: 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.idt2.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.idt2.id自动增加到一定范围。

在mysql中执行此操作的最佳方法是什么。

我谦卑地请求你帮助我

3 个答案:

答案 0 :(得分:1)

你可以做一个

where t1.id = (t2.id+96);

这让我感到紧张,因为它假设两个ID之间总是96。如果你可以让id相同,我会更舒服,因此在两个表中都是98,或者如果两个表中都有一些代码将它们识别为同一数据。那你有

where t1.id = t2.id

where t1.code = t2.code

答案 1 :(得分:1)

如果我理解正确,每次新更新时,bot 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;

答案 2 :(得分:0)

您可以过滤Id列的相对差异,并设置上限。

这样的东西
WHERE t1.id=t2.id+96
AND t1.id < @SomeCeilingValue