Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kasowanie rekordów do maksymalnej ilości X w każdej grupie, Jak to ugryźć w jednym zapytaniu
L_Devil
post
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


Witam, mam pewien dość irytujący problem:

Mam w MySQL 5 tabelę:

Kod
+--+-----+----------------+
|id|owner|    blablabla   |
+--+-----+----------------+
|1 | 1   |     kobakovga  |
|2 | 1   |    dwawdadw    |
|3 | 1   |    d21r1rtt2   |
|4 | 2   |    koawdawdka  |
|5 | 2   |   dawawdaddwa  |
+--+-----+----------------+
Pole blablabla nie jest dla nas istotne. Jak widać rekordy mają id własne i id grupy (pole owner). Teraz chciałbym jednym zapytaniem pozbyć się starszych rekordów z danej grupy. Zależy mi, żeby w każdej grupie pozostały np. maks 2 rekordy, przy czym w pierwszej kolejności należy kasować te z niższymi numerami id. Nie ma reguły że te same grupy owner będą następowały bezpośrednio po sobie (np. owner =1 mogą mieć rekordy o id 2, 5, 15). Po wykonaniu takiego zapytania powyższa tabelka powinna dojść do takiego rezultatu:
Kod
+--+-----+----------------+
|id|owner|    blablabla   |
+--+-----+----------------+
|2 | 1   |    dwawdadw    |
|3 | 1   |    d21r1rtt2   |
|4 | 2   |    koawdawdka  |
|5 | 2   |   dawawdaddwa  |
+--+-----+----------------+

Zacząłem kombinować coś takiego:
  1. DELETE FROM tabelka GROUP BY owner
  2. ORDER BY id ASC LIMIT
  3. (SELECT 2-count(id) FROM tabelka GROUP BY owner)

Czy to jest poprawne rozumowanie?

Ten post edytował L_Devil 20.05.2008, 12:38:39
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 00:27