У меня есть две таблицы:
TEST1:
id int, value int, parentId int
и TEST2:
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
Я хочу обновить две таблицы в одном обновлении, используя функцию нескольких таблиц.Цель состоит в том, чтобы добавить +1 значение к каждой записи TEST1 и +1 значение к записи в TEST2, где parentId аналогичен TEST1.
Мой запрос:
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 должнопроисходит три раза на одной и той же записи.
Почему я получаю 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, как я ожидал.