Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] wyzerowanie pol rekordow o id roznym od dluuuuuuuugiej listy
Forum PHP.pl > Forum > Przedszkole
esos
mam okolo 6k rekordow. w okolo 5400 z nich musze wyzerowac jedno z pol. niestety posiadam tylko id tych rekordow, ktore sa ok czyli ktorym nie trzeba wyczyscic pola. jak ma wygladac takie zapytanie? bo chyba nie moze to byc 600 razy w zapytaniu: ..AND `user.id`!=4987 AND `user.id`!=4992... ?
yaotzin
Wydaje mi się że znajomość samego ID nie wystarczy chyba że jest jakaś reguła występowania tych pól które musisz wyczyścić, np różnica tych id dla pól wynosi 5... czy coś w tym rodzaju, bo musisz chyba podać jakiś warunek wg którego będzie usuwać.... czy tam zerować
Kicok
  1. <?php
  2. $dobre_identyfikatory = array(1, 3, 4, 5, 7, 8, 11, 13, 14);
  3. $zapytanie = 'UPDATE `tabela` SET `pole` = 0 WHERE (`ID` NOT IN (' . implode(',', $dobre_identyfikatory) . '));';
  4.  
  5. mysql_query($zapytanie);
  6. ?>


Jeśli będą jakieś kłopoty z tak długim zapytaniem, to możesz rozbić tabelę $dobre_identyfikatory na 10 mniejszych i wykonać 10 zapytań
chlebik
By powiedzmy na przyszlosc ten skrypt mogl byc uzyty drugi raz to te ID do wyzerowania wrzuc do pliku tekstowego(np. kolejne ID rozdzielone powiedzmy srednikiem). Odczytujesz i na biezaco zamieniasz w bazie. To tylko taki pomysl - nigdy nie operowalem na takich ilosciach danych i nie wiem jak z efektywnoscia takiego rozwiazania. Jesli ktos ma o tym pojecie to niech napisze (najlepiej na PM by nie smiecic).
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.