[PHP][MySQL]Aktualizacja wartości jednym zapytaniem z nietypową budową tabeli w bazie |
[PHP][MySQL]Aktualizacja wartości jednym zapytaniem z nietypową budową tabeli w bazie |
22.05.2012, 06:46:15
Post
#1
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) |
Jak przy takiej budowie tabeli:
Cytat config_name | config_value nazwa _______________ 1 nazwa2 _______________ 343434 nazwa3_______________ ifejfiesfjesifj Zaktualizować za jednym zamachem wszystkie rekordy? Przy aktualizacji jednego, wyglądałoby to tak:
Da się jakoś skonstruować to zapytanie tak, aby XX takich rekordów zaktualizować za jednym zamachem? |
|
|
22.05.2012, 06:52:17
Post
#2
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) |
Jeśli chcesz wszystkie to:
a wybrane:
Ten post edytował bastard13 22.05.2012, 06:53:48 -------------------- |
|
|
22.05.2012, 06:56:22
Post
#3
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) |
|
|
|
22.05.2012, 11:26:05
Post
#4
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) |
A jeśli chcę pojedyncze rekordy zmieniać w pojedynczych polach? To zapytanie ma wyglądać tak:
Nie. Klauzuli IN można używać tylko wewnątrz klauzuli WHERE. Wyrażenie SET musi mieć konkretną wartość z dozwolonego zakresu typów wartości. A odpowiadając na pierwsze pytanie: jeśli wartości są różne dla każdego wpisu to nie da się. Nie da się czystym zapytaniem MySQL. Ale jeśli możesz wykorzystać PHP, to mógłbyś posłużyć się PDO, spreparować zapytanie i wykonać je w pętli dla tablicy wartości:
|
|
|
22.05.2012, 11:37:58
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat A odpowiadając na pierwsze pytanie: jeśli wartości są różne dla każdego wpisu to nie da się. Nie da się czystym zapytaniem MySQL. Formalnie rzecz biorąc to jak najbardziej da się, ale nie będzie to za ładne zapytanie, coś w stylu:Ale taki potworek to koszmar w "utrzymaniu", powinieneś w obrębie jednej transakcji wykonać n zapytań UPDATE, tak jak pokazał to @bostaf. |
|
|
22.05.2012, 21:26:20
Post
#6
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) |
Crozin, próbując użyć Twojego zapytania:
Otrzymuję błąd: Cytat #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHERE config_name IN ("version", "meta")' at line 1 Co jest nie tak? |
|
|
22.05.2012, 22:29:20
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Powinno być:
Ale naprawdę nie powinieneś wykonywać takiego zapytania - seria n normalnych zapytań to zdecydowanie lepsze rozwiązanie w tym przypadku. |
|
|
22.05.2012, 22:32:18
Post
#8
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) |
Ale pod względem optymalnym? Czemu niby? Przecież tutaj mam jedno zapytanie, a tak będzie ich ok. 60.
|
|
|
22.05.2012, 22:39:08
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
1. Ilość zapytań i ich złożoność to dwie zupełnie odmienne sprawy. Mniejsza ilość zapytań nie musi oznaczać wzrostu wydajności.
2. Tutaj domyślam się, że chodzi o aktualizację jakiejś ogólnej konfiguracji strony/fragmentu strony. Zapewne ten kod nie jest wykonywany 20 razy na sekundę, tak więc aspekty wydajności są nieistotne. Natomiast czytelność i prostota kodu jak najbardziej odgrywają tutaj znaczącą rolę. |
|
|
22.05.2012, 22:42:50
Post
#10
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) |
|
|
|
Wersja Lo-Fi | Aktualny czas: 29.05.2024 - 07:23 |