Hola que tal, tengo una tabla:
T1
| ID | Usuario | Fecha | Datos |
y quiero dejar solo los ultimos 50 registros de un usuario, (los 50 mas nuevos segun la fecha) eliminando los mas antiguos.
Como podria armar la consula?
| ||||
Respuesta: Dejar solo los 50 registros mas nuevos Arme esta consulta pero no me resulta :(
Código SQL:
Ver original #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'As TA WHERE TA.ID>(SELECT TB.ID As IDA FROM T1 As TB WHERE TB.Usuario=1 ORDER BY TB.' at line 1 tambien probe:
Código MySQL:
y nada :/Ver original le cambie de todo pero no anda, alguien me hecha un cable? Última edición por NSD; 08/02/2013 a las 10:54 |
| |||
Respuesta: Dejar solo los 50 registros mas nuevos 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 Ahora bien, supongamos que queremos dejar sólo los últimos tres registros para cada usuario... podrías hacerlo así:
Código MySQL:
Ver original observa que en realidad lo que hago es obtener mediante una subconsulta los registros que se tienen que eliminar...
Código:
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.SELECT * FROM tabla WHERE usuario = 'uno' ORDER BY usuario, fecha DESC LIMIT 3, 999 Si encuentro alguna otra forma más sencilla de hacerlo la posteo después... Por lo pronto puedes comenzar a probar esto. Saludos Leo. |
| ||||
Respuesta: Dejar solo los 50 registros mas nuevos hola leo, tu consulta me anduvo genial el problema que le encuentro es que LIMIT 3, 999 elimina todos los registros desde el 3 al 999 pero que tal si hay 1200 registros? no se eliminarian dejando solo 3, no existe en mysql alguna constante equivalente a "INF" en php para indicar un infinito en el segundo parametro? |
| |||
Respuesta: Dejar solo los 50 registros mas nuevos Hola de nuevo NSD... En mi post hago notar que este numero debe ser lo suficiente grande como para que abarque el total de registros que puede tener la tabla.... he hecho en la misma documentación oficial hacen notar este hecho: http://dev.mysql.com/doc/refman/5.0/es/select.html Cita: SaludosPara recibir todos los registros de un desplazamiento hasta el final del conjunto de resultados, puede usar algún número grande para el segundo parámetro. Este comando recibe todos los registros desde el 96th hasta el último: mysql> SELECT * FROM table LIMIT 95,18446744073709551615; Leo. |
Etiquetas: |