我有两张桌子:
测试1:
id int, value int, parentId int
和测试2:
id int, value int, parentId int
在 TEST1 中,我有以下记录:
id value parentId
1 0 1
2 0 1
3 0 1
在 TEST2 中,我有:
id value parentId
1 0 1
我想使用多表功能一次更新两个表。目标是为 TEST1 的每条记录添加 +1 值,并为 TEST2 中 parentId 与 TEST1 相似的记录添加 +1 值。
我的查询是:
UPDATE TEST1 t1
LEFT OUTER JOIN TEST2 t2 ON t1.parentId=t2.parentId
SET t1.value = t1.value + 1,
t2.value = t2.value + 1;
之后,我进行选择以检查 TEST1 的值是否已更新:
SELECT * FROM TEST1;
它给了我:
id value parentId
1 1 1
2 1 1
3 1 1
我检查 TEST2 :
SELECT * FROM TEST2;
它给了我:
id value parentId
1 1 1
我觉得奇怪的是 TEST2 的记录的值为 1。我希望 3 因为 TEST1 的更新是在 3 条记录上,所以 TEST2 的更新应该在同一条记录上发生 3 次。
为什么我获得 1 而不是 3 ?获得 3 的正确查询是什么?
编辑:我也试过:
SET @var=1;
UPDATE TEST1 t1
LEFT OUTER JOIN TEST2 t2 ON t1.parentId=t2.parentId
SET t1.value = t1.value + 1,
t2.value = (@var:= @var + 1);
在此查询之后, t2.value 等于 2 !而不是我所期望的4。