web-dev-qa-db-ja.com

MySQLアップデート:一致した行がset句に基づいて変更されるのはなぜですか?

1つのフィールドを更新する膨大な数のテーブルを結合する更新クエリを実行したところ、29kの奇妙な行に一致しました。 Set句に追加するだけで同じクエリを実行すると、一致する行が118kの奇数行に増加しました。これは、WHERE句が編集された場合にのみ変更されるはずです。

2
Bryan Agee

私はちょうどそれを理解したと思います...

MySQLは、更新中に発生する結合によって生成されるすべての行ではなく、更新される行の数をカウントする必要があります。違いは、[B]が1つ[A]に多く、[C]が1つ[B]に多い場合、すべてを結合するとn([C])行が作成されますが、[B]を更新するとn( [B])。 [C]のセットを追加すると、この数はn([B])+ n([C])になります。

Set句のフィールドは異なるテーブルにあるため、更新される数が変更されます。

2
Bryan Agee