![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 31.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam, czy jest mozliwe losowe skasowanie np. polowy zawartosci tabeli bez uzycia php?
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Wg mnie jest możliwe:
Zrobić tabelę tymczasową z wylosowanymi rekordami i później usunąć wszystkie rekordy wylosowane z tabeli nietymczasowej, coś ala: Cytat CREATE TEMPORARY TABLE tmptable SELECT A.* FROM table1 AS A, table1 AS B WHERE A.username LIKE '%2' AND A.ID = B.ID AND A.username <> B.username; DELETE table1 FROM table1 INNER JOIN tmptable ON table1.username = tmptable.username; cytat z MySQL reference Raczej nie uda się poprzez podzapytanie, ponieważ: Cytat you cannot delete from a table and select from the same table in a subquery. Pozdrawiam -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
To, że nie da się użyć podzapytania to już wyjaśnił @TomASS, ale ja bym tutaj nie uciakał od php bo będzie bardzo pomocne i nie będzie trzeba robić akrobatycznych wyczynów z tabelą pomocniczą.
1. Pobieramy liczbe rekordów w tabeli:
2. Pobieramy ten wynik w php i dzielimy go na dwa; mamy teraz zmienną $limit; 3. Wykonujemy zapytanie:
Tak więc zastanów sie czy na pewno chcesz uciec od php w tej sytuacji. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
No tak, tylko że nie będzie to losowe skasowanie :/ Aczkolwiek pomysł bardzo dobry jeśli chodzi o skasowanie połowy.
Ten post edytował TomASS 25.09.2005, 10:48:33 -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(TomASS @ 2005-09-25 11:48:16) No tak, tylko że nie będzie to losowe skasowanie :/ (...) Jak to nie :?: Gwarantuje mi to RAND() użyte w klauzuli ORDER BY Jedynym ograniczeniem może być wersja MySQL'a: Cytat ORDER BY can be used with DELETE beginning with MySQL 4.0.0. Zdarza się że jeszcze ludzie mają starszego niż 4.0.0
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 31.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Super, swietne i bardzo szybkie rozwiazanie. Thx
----edit---- Jo łelkam ![]() ~mike_mech |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 06:27 |