Originariamente inviato da Bukowski
Poichè è una tabella di una sorta di forum, in cui, per ogni argomento (800 circa) ci sono centinaia di messaggi postati, vorrei lasciare solo gli ultimi 100 per ogni argomento, e rimuovere quindi quelli piu vecchi.
Come posso fare?
Grazie mille
azz.. 800 argomenti !!! Non avevo realizzato prima.
potresti allora fare prima una selezione degli argomenti che abbiano un count > 100. poi fare la scansione del result set eseguendo le due query postate prima....
Esempio:
codice:
$query = "
select argomento, count(*) as tot
from tabella
group by argomento
having tot > 100
order by argomento
";
ciclo while estraendo argomento
while ($argomento = mysql_fetch_assoc($res) ) {
$query1 = "select id from tabella
where argomento = '$argomento[0]'
order by id DESC
LIMIT 50 , 1";
Esegui la query ed estrai id minimo da tenere
$query2 = "DELETE FROM TABELLA
WHERE argomento = '$argomento[0]'
AND id < [id riferimento]";
Esegui la query e chiudi il WHERE
}
tecnicamente dovrebbe funzionare. Completa il codice e prova su una tabella di test ovviamente.