Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] update - duzo aktualizacji w jednym zapytaniu
Forum PHP.pl > Forum > Bazy danych > MySQL
wojtek22
  1. UPDATE raport_test
  2. SET kolumna1 = CASE id
  3. WHEN 1 THEN '3z'
  4. END,
  5. kolumna2 = CASE id
  6. WHEN 1 THEN 'yyy'
  7. END
  8. WHERE id IN (1)


czy to zapytanie jest poprawne
problem mam taki ze w przypadku gdy jak zmienie jakąś wartość dla kolumny i wykonam zapytanie
to zwraca mi ze zmodyfikowano 1 rekord

ale w przypadku gdy dla danego id nie bylo zadnej zmiany i wykonam to zapytanie jeszcze raz to on wogole tego nie aktualizuje
zwraca mi ze zmodyfikowano 0 rekordow

czy system przed aktualizacja sprawdza czy cos sie zmienilo i robi aktualizacje tylko jak są jakieś zmiany?

w specyfikacji https://dev.mysql.com/doc/refman/5.7/en/case.html
jest tam jeszcze ELSE - do czego to służy ?
mmmmmmm
1. co do zmiany - tak, wyp[isuje tylko ilość zmodyfikowanych.
2. Co do ELSE. służy ono do tego, by dla wartości, które nie spałniły żadnego warunku w CASE nie był wstawiany NULL
wojtek22
jezeli jest WHERE id IN (1) to juz nie musze dawac ELSE w zapytaniu
czy dobrze to rozumiem?

czy da sie napisac takie zapytanie w inny sposob aby dzialalo szybciej
aktualnie zapytanie przy aktualizacji kilku dziesiaciu tys rekordow wykonuje sie okolo 30 sekund
Pyton_000
To zapytanie jest trochę bez sensu. Poprawne ale bez sensu. 2x sprawdzasz ten sam warunek (raz w Case a raz w Where)

Wywal to CASE i zostaw same wartości. Efekt będzie dokładnie taki sam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.