Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] update - duzo aktualizacji w jednym zapytaniu
wojtek22
post 2.01.2016, 14:55:45
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 19.12.2015

Ostrzeżenie: (0%)
-----


  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 ?

Ten post edytował wojtek22 2.01.2016, 14:56:41
Go to the top of the page
+Quote Post
mmmmmmm
post 3.01.2016, 19:40:16
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
Go to the top of the page
+Quote Post
wojtek22
post 4.01.2016, 00:16:13
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
Go to the top of the page
+Quote Post
Pyton_000
post 5.01.2016, 10:06:39
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 03:20