Hola NSD:
Para eliminar los registros de un usuario en específico podrías intentarlo así, supongamos que tenemos estos datos:
Código MySQL:
Ver original+------+---------+---------------------+---------------------+
| id | usuario | fecha | valor |
+------+---------+---------------------+---------------------+
| 9 | dos | 2013-01-11 11:37:05 | 0.7715120667326376 |
| 6 | dos | 2012-08-28 11:37:05 | 0.3587129659566218 |
| 10 | dos | 2012-06-26 11:37:05 | 0.7995527096088535 |
| 3 | dos | 2012-05-17 11:37:05 | 0.2546243381263915 |
| 5 | dos | 2012-03-16 11:37:05 | 0.6319321306719744 |
| 11 | tres | 2012-12-23 11:37:05 | 0.24789315857728306 |
| 7 | tres | 2012-09-01 11:37:05 | 0.12815745373084905 |
| 12 | tres | 2012-04-04 11:37:05 | 0.5139959030915013 |
| 4 | uno | 2013-01-11 11:37:05 | 0.6275553103792996 |
| 2 | uno | 2012-10-17 11:37:05 | 0.13447859895832706 |
| 8 | uno | 2012-10-15 11:37:05 | 0.20657520387934075 |
| 1 | uno | 2012-04-21 11:37:05 | 0.14449659096495862 |
+------+---------+---------------------+---------------------+
12 rows
in set (0.00 sec
)
Ahora bien, supongamos que queremos dejar sólo los últimos tres registros para cada usuario... podrías hacerlo así:
Código MySQL:
Ver originalQuery OK, 1 row affected (0.05 sec)
Query OK, 2 rows affected (0.04 sec)
+------+---------+---------------------+---------------------+
| id | usuario | fecha | valor |
+------+---------+---------------------+---------------------+
| 9 | dos | 2013-01-11 11:37:05 | 0.7715120667326376 |
| 6 | dos | 2012-08-28 11:37:05 | 0.3587129659566218 |
| 10 | dos | 2012-06-26 11:37:05 | 0.7995527096088535 |
| 11 | tres | 2012-12-23 11:37:05 | 0.24789315857728306 |
| 7 | tres | 2012-09-01 11:37:05 | 0.12815745373084905 |
| 12 | tres | 2012-04-04 11:37:05 | 0.5139959030915013 |
| 4 | uno | 2013-01-11 11:37:05 | 0.6275553103792996 |
| 2 | uno | 2012-10-17 11:37:05 | 0.13447859895832706 |
| 8 | uno | 2012-10-15 11:37:05 | 0.20657520387934075 |
+------+---------+---------------------+---------------------+
observa que en realidad lo que hago es obtener mediante una subconsulta los registros que se tienen que eliminar...
Código:
SELECT * FROM tabla
WHERE usuario = 'uno'
ORDER BY usuario, fecha DESC LIMIT 3, 999
el LIMIT 3, 999 indica que deberá traer los registros, a partir del cuarto registro, hasta un número los suficientemente grande (999) para traer todos los registros de este usuario.
Si encuentro alguna otra forma más sencilla de hacerlo la posteo después... Por lo pronto puedes comenzar a probar esto.
Saludos
Leo.