我希望以下查询会更新 where 的所有行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
更新了所有行,这也应该有效。