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:|id|owner| blablabla |
+--+-----+----------------+
|1 | 1 | kobakovga |
|2 | 1 | dwawdadw |
|3 | 1 | d21r1rtt2 |
|4 | 2 | koawdawdka |
|5 | 2 | dawawdaddwa |
+--+-----+----------------+
Kod
+--+-----+----------------+
|id|owner| blablabla |
+--+-----+----------------+
|2 | 1 | dwawdadw |
|3 | 1 | d21r1rtt2 |
|4 | 2 | koawdawdka |
|5 | 2 | dawawdaddwa |
+--+-----+----------------+
|id|owner| blablabla |
+--+-----+----------------+
|2 | 1 | dwawdadw |
|3 | 1 | d21r1rtt2 |
|4 | 2 | koawdawdka |
|5 | 2 | dawawdaddwa |
+--+-----+----------------+
Zacząłem kombinować coś takiego:
DELETE FROM tabelka GROUP BY owner ORDER BY id ASC LIMIT (SELECT 2-count(id) FROM tabelka GROUP BY owner)
Czy to jest poprawne rozumowanie?