![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 19.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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 ? Ten post edytował wojtek22 2.01.2016, 14:56:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 19.12.2015 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 03:20 |