Pracuję z tabeli (Wyniki), który ma następującą strukturę (nie pytaj, nie budować)MySql UPDATE z SUM w tej samej tabeli
id | record_type | user_id | answer_id | choice | score | total | email
-------------------------------------------------------------------------------
1 email xxxxxxx 0 [email protected]
2 answer xxxxxxx aaaaaa A 0
3 answer xxxxxxx bbbbbb A 0
4 answer xxxxxxx cccccc B 10
5 email yyyyyyy 0 [email protected]
6 answer yyyyyyy aaaaaa A 0
7 answer yyyyyyy bbbbbb A 0
8 answer yyyyyyy cccccc A 0
9 email zzzzzzz 0 [email protected]
10 answer zzzzzzz aaaaaa A 0
11 answer zzzzzzz bbbbbb A 0
12 answer zzzzzzz cccccc B 10
Jest to badanie i wartości wyników poprawnych odpowiedzi uległy zmianie po przesłaniu ankiet. Już uruchomiłem aktualizację, aby ustawić wartości punktacji dla "poprawnych" odpowiedzi na 10, a teraz muszę zaktualizować sumę dla rekordów z typem rekordu: e-mail, abyśmy mogli skontaktować się ze zwycięzcami.
Celem byłoby ustawić całkowitą kolumnę wierszy 1,5 i 9 będzie 10,0 i 10
mam na myśli coś takiego
UPDATE results SET total = SUM(score)
FROM results GROUP BY user_id WHERE user_id = user_id
Ale to nie robi” Wyglądasz dobrze i martwię się, że mogę zejść na złą drogę.
to działa. Bardzo dobrze. Dziękuję Ci. – byron
Pytanie dla was ... Używam tego na stole z ~ 400 tys. Wierszy i się zawiesza (prawdopodobnie brakuje pamięci). Wszelkie sugestie do rozwiązania? Jak, sposób uruchomienia zapytania w porcjach? – byron
Może to wyglądać na "skomplikowane", ale w rzeczywistości jest łatwe do zrealizowania i działa jak marzenie (potrzebujesz unikalnego indeksu, który musiałem utworzyć, aby spełnić moje wymagania) – zzapper