Hurtowa zmiana wartości kolumny liczbowej o zadaną wartość |
Hurtowa zmiana wartości kolumny liczbowej o zadaną wartość |
13.12.2016, 18:50:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
Witam.
Mam pilną potrzebę hurtowego zwiększenia wartości liczbowej kolumny w tabeli o zadaną wartość. Chodzi o dodanie postów na forum, które zostały odzyskane po awarii po dość długim czasie. W między czasie zostały napisane nowe posty, które zajęły numery id postów teraz odzyskanych. Wymyśliłem, że do odzyskanej tabeli dodam aktualne rekordy i tylko będę musiał zmienić kilka tysięcy numerów id tych nowych postów. Potrzebny do wklejenia zakres rekordów wyeksportowałem do osobnego pliku i tylko na nim będę chciał przeprowadzić operację zmiany ID. Najpierw zaimportuję go do bazy pod roboczą nazwą by przeprowadzić zmianę numeracji ID. Potem pobiorę tabelę z nowymi ID i następnie wkleję ten zakres do pliku odzyskanego i wtedy zaimportuję do bazy. Czy ktoś mi może podać składnię zapytania zmieniające kolumnę o daną wartość? Będę to robił z poziomu phpMyAdmin. Nazwa tabeli to phpbb_posts a kolumny post_id. Ten post edytował tombog 13.12.2016, 18:51:50 |
|
|
13.12.2016, 21:02:35
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Bez jaj.
UPDATE phpbb_posts SET post_id=post_id+100000000 |
|
|
13.12.2016, 23:48:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
Ależ jestem jak najbardziej poważny. Po użyciu Twojej propozycji otrzymuję komunikat:
#1062 - Duplicate entry '36931' for key 'PRIMARY' Nie jestem guru mysql. Chcę tylko odzyskać posty z forum. Myśleć potrafię ale brakuje mi wiedzy w tej akurat materii dlatego proszę o pomoc. |
|
|
14.12.2016, 08:13:42
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Sorry, bez jaj.
Gdybyś użył mojej propozycji, to nie mógłbyś uzyskać takiego komunikatu, gdyż takie entry by się nie pojawiło. Pomyśl trochę. |
|
|
14.12.2016, 09:56:34
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
Właśnie staram się myśleć. Zakładam, że +100000000 to przykładowa wartość i ja muszę w to miejsce wstawić własną o jaką chcę zwiększyć wartość w kolumnie post_id. Wypluwa mi wtedy takie entry jakie podałem.
Zakładam, że może chodzić o to, że taka wartość występuje w innym wierszu tej kolumny bo mieści się w zmienianym zakresie i wypluwa mi błąd o duplikacie. Nie wiem jak to obejść. Jedyne co mi przychodzi do głowy to faktycznie zwiększyć wszystko o milion i potem zmniejszyć o (milion minus żądana wartość). Dobrze kombinuję? Ten post edytował tombog 14.12.2016, 09:57:31 |
|
|
14.12.2016, 10:40:58
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Znajdź MAX(post_id) w obecnej tabeli, dodaj do tej wartości np. 1000 i zwiększ post_id o tą wartość (będzie to np. 23400)
|
|
|
14.12.2016, 13:18:00
Post
#7
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
Więc tak. Dodałem 1000000. Uniknąłem w ten sposób dublowania wpisów i zadziałało pięknie. Następnie odjąłem tyle ile trzeba i mam już zmienioną numerację o tyle ile chciałem Dziękuję bardzo za pomoc.
Mam jednak jeszcze prośbę o składnię do zamiany wartości w tabeli phpbb_posts w kolumnie poster_id ale według klucza zmień 24 na 115. Czyli tylko wiersze w kolumnie zawierające liczbę 24 zamieniamy na 115. UPDATE phpbb_posts IF poster_id=24 SET poster_id=115 ? Dobrze to ogarniam? |
|
|
14.12.2016, 13:20:20
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
o WHERE nie slyszal?
UPDATE phpbb_posts SET poster_id=115 where poster_id=24 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.12.2016, 13:26:51
Post
#9
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
o WHERE nie slyszal? UPDATE phpbb_posts SET poster_id=115 where poster_id=24 Coś tam słyszał ale ja nie programista a jeno chcę forum uratować. Co się w tej zupie apdejtów, setów czy łerów dzieje to tak nie do końca wiem kiedy czego i w jakiej konfiguracji się używa. Dziękuję bardzo za wyrozumiałość i pomoc |
|
|
14.12.2016, 13:33:26
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Wracajac do problemu z dodawaniem jakiejs liczby do ID to mmmmmmm nie wiem skad te obruszenie? Przeciez jak masz ID z zakresu 1..100 i dodajesz 50 to logiczne ze juz dla pierwszego ID bedzie 51 ktore jest duplikatem. By zrobic to poprawnie to trzeba dodac
...ORDER BY ID DESC wowczas zacznie dodawanie od ostatniego ID i duplikaty sie nie pojawia Zabawa w dodawanie 10000000 a potem odejmowanie to z lekka przegiecie -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.12.2016, 14:43:47
Post
#11
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
By zrobic to poprawnie to trzeba dodac ...ORDER BY ID DESC wowczas zacznie dodawanie od ostatniego ID i duplikaty sie nie pojawia ) Czy mógłbyś bardziej łopatologicznie wyjaśnić zastosowanie tego w całej składni? Bo mi nie chodziło o zwiększenie od ostatniego ID tylko od konkretnego. Zmieniany zakres powiedzmy wynosił 37945 - 53976 a ja potrzebowałem zakres od 46427 - do ile tam wyjdzie. Nie ma więc opcji by nie było dubli moim zdaniem. |
|
|
14.12.2016, 14:48:41
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Chciales zwiekszyc wszystkie ID o powiedzmy 20000.
Robiac tak UPDATE phpbb_posts SET post_id=post_id+20000 bedzie ci plulo bledem taki jaki miales. To jest naturalne. Ale gdy dodasz sortowanie, by najpierw lecial od ostatniego w dol, to bedzie wszystko cacy UPDATE phpbb_posts SET post_id=post_id+20000 order by post_id desc gdyz zacznie zmieniac rekordy od ostatniego a nie od pierwszego -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.12.2016, 15:01:28
Post
#13
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.12.2010 Ostrzeżenie: (0%) |
OK, teraz rozumiem. Faktycznie tak jest prościej Dzięki za wyjaśnienia
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 17:43 |