複数のテーブルの更新と奇妙な結果:のMySQL、私は2つのテーブル持って
TEST1:
id int, value int, parentId int
とTEST2:TEST1で
id int, value int, parentId int
、私が持っている次のレコードを:
id value parentId
1 0 1
2 0 1
3 0 1
TEST2の場合:
id value parentId
1 0 1
複数のテーブル機能を使用して1つの更新で2つのテーブルを更新したいと考えています。 目的は、TEST1の各レコードに+1値を追加し、TEST2のレコードに+1値を追加し、parentIdがTEST1に似ているようにすることです。
私のクエリは次のとおりです。それは私を与える
SELECT * FROM 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の値が更新されていることを確認するために選択を行う
id value parentId
1 1 1
2 1 1
3 1 1
私はTEST2をチェックする:
SELECT * FROM TEST2;
それは私を与える:
id value parentId
1 1 1
私は奇妙見つける何TEST2の記録はTEST1の更新は3枚のレコードとそうTEST2の更新上にあるので、私は3期待値1を持っているということです同じレコードで3回発生する必要があります。
なぜ私は3の代わりに1を取得するのですか? 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。
答えていただきありがとうございます。私はちょうど試しましたが、これは何も変わりません。 –