1

次のクエリがすべての行を更新することを望んでupdated=0いましたが、そうではありません。単一の更新のみを行います。理由がわかりますか?

UPDATE scores t1
JOIN scores t2
ON FIND_IN_SET(t1.id, t2.vals)
SET t1.total = t1.total  + 1
WHERE t2.updated = 0;

クエリ実行前のテーブル

"id"    "total" "vals"  "updated"
"1"     "0"     ""      "0"
"2"     "0"     ""      "0"
"3"     "0"     ""      "0"
"4"     "0"     "1,2,3" "0"
"5"     "0"     "1,2"   "0"

望ましい結果

"id"    "total" "vals"  "updated"
"1"     "2"     ""      "0"
"2"     "2"     ""      "0"
"3"     "1"     ""      "0"
"4"     "0"     "1,2,3" "0"
"5"     "0"     "1,2"   "0"

私が得ているもの

"id"    "total" "vals"  "updated"
"1"     "1"     ""      "0"
"2"     "1"     ""      "0"
"3"     "1"     ""      "0"
"4"     "0"     "1,2,3" "0"
"5"     "0"     "1,2"   "0"

すべての行を更新するためupdate scores set totals = 1 where updated = 0、これも機能するはずです。

4

1 に答える 1