Załóżmy tabelę z następującymi kolumnami:sql oświadczenie usunąć rekordy starsze niż XXX tak długo, jak istnieje ponad YY wierszy
pri_id
, item_id
, comment
, date
Co chcę mieć to Zapytanie SQL, które usunie wszelkie rekordy dla określonego item_id
starszych niż podana data, ale tylko tak długo, jak jest więcej niż 15 wierszy dla tego item_id
.
To będzie używane do usuwania rekordów komentarzy starszych niż 1 rok dla przedmiotów, ale nadal chcę zachować co najmniej 15 rekordów w danym momencie. W ten sposób, gdybym miał jeden komentarz przez 10 lat, nigdy nie zostałby usunięty, ale gdybym miał 100 komentarzy w ciągu ostatnich 5 dni, zachowałbym tylko 15 najnowszych rekordów. Są to oczywiście arbitralne liczby rekordów i daty dla tego przykładu.
Chciałbym znaleźć bardzo ogólny sposób robienia tego, który działałby w mysql, oracle, postgres itp. Używam biblioteki php adodb do abstrakcji DB, więc chciałbym, żeby działała dobrze z tym, jeśli możliwy.
Dla wszystkich przyszłych użytkowników tego zapytania, należy uważać, jak to zapytanie nie będzie zachować początkowe 15 rekordy należące do dowolnej item_id który uruchamia kwerendę z 15. –