Я надеялся, что следующий запрос обновит все строки, где 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;
Таблица перед запуском Query
"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
обновляет все строки, это тоже должно сработать.
Он обновляет только те строки, которые соответствуют 'ON' условию. – Barmar
@Barmar Я обновил свой вопрос с результатами. Он обновляется только один раз в моем случае, беря строку '4' – jmenezes