通过从另一个数据库获取值来更新行的最佳过程是什么。
以下是我正在使用的查询。
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中执行此操作的最佳方法是什么。
我谦卑地请求你帮助我
答案 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