Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Borrar desde el registro num X

Estas en el tema de Borrar desde el registro num X en el foro de Mysql en Foros del Web. Hola! tengo este problema que busque y no encontre la solucion todabia :( Quiero borrar por ejemplo a partir del registro numero 7 por ej ...
  #1 (permalink)  
Antiguo 15/06/2009, 15:07
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Exclamación Borrar desde el registro num X

Hola!
tengo este problema que busque y no encontre la solucion todabia :(

Quiero borrar por ejemplo a partir del registro numero 7

por ej

1
2
3
4
5
6
7 <- A partir de este registro todos los demas se borran
8
9
10
11
12

Espero puedan ayudarme . Gracias!
  #2 (permalink)  
Antiguo 15/06/2009, 19:00
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Borrar desde el registro num X

Te sirve esto?
Código sql:
Ver original
  1. DELETE FROM tu_tabla WHERE tu_campo > 6
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 16/06/2009, 14:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Borrar desde el registro num X

Cita:
Iniciado por Genetix Ver Mensaje
Te sirve esto?
Código sql:
Ver original
  1. DELETE FROM tu_tabla WHERE tu_campo > 6
Hola!.

Gracias pero no me sirve me elimina TODOS los campos! :S!

y haciendolo alrevez no hace nada xD
  #4 (permalink)  
Antiguo 16/06/2009, 14:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Borrar desde el registro num X

Explica un poco mas lo que tratas de hacer.
La sentencia que te plantea genetix, borra todos los registros que tengan números mayores a 6.

Yo también lo entendí e esa forma.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 17/06/2009, 18:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Borrar desde el registro num X

Cita:
Iniciado por huesos52 Ver Mensaje
Explica un poco mas lo que tratas de hacer.
La sentencia que te plantea genetix, borra todos los registros que tengan números mayores a 6.

Yo también lo entendí e esa forma.
Claro yo tambien lo entendi de es forma y por logica supuestamente hace eso. pero magicamente me borra todo :S
  #6 (permalink)  
Antiguo 17/06/2009, 18:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar desde el registro num X

Cita:
Claro yo tambien lo entendi de es forma y por logica supuestamente hace eso. pero magicamente me borra todo :S
No puede borrarte "mágicamente todo".
¿Cómo es la sentencia que estás ejecutando, y cómo la estructura de la tabla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/06/2009, 22:27
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Exclamación Respuesta: Borrar desde el registro num X

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No puede borrarte "mágicamente todo".
¿Cómo es la sentencia que estás ejecutando, y cómo la estructura de la tabla?
Hola como le vaaa

Ya se que no puede borrar magicamente todo!! esto es sistematico y puntual.
corrijame si tengo un errorrr

Código PHP:
mysql_query "DELETE FROM comentarios WHERE id > 10"); 
tengo entendido que supuestamente esto borra todo lo que sea mayor a ID "10"

tenia como 20 registros y los borro todos :S nose q hize mal :$
  #8 (permalink)  
Antiguo 18/06/2009, 22:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Borrar desde el registro num X

Hize un descubrimiento estupido!! jajajaja
miren una vez q se boorran las id aparecen nuevas correcto??

Bueno lo que quiero haceer es borrar todos los registros despues de los primeros 10 no del ID 10..

Eso es!! no habra algun LIMIT 0,7 a como limitar a partir de X registro?
  #9 (permalink)  
Antiguo 19/06/2009, 04:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar desde el registro num X

Si lees bien esta sentencia que has puesto, notarás que MySQL hizo exactamente lo que le dijiste: Borró todo lo que fuera mayor a 10.
Entonces el error es que le pusiste un rango equivocado, simplemente le tenías que indicar que borrara todas las iguales o menores a 10...
o las que estuvieran entre 1 y 10:
Código sql:
Ver original
  1. DELETE FROM comentarios WHERE id <= 10;
  2. DELETE FROM comentarios WHERE id BETWEEN 1 AND 10;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 19/06/2009, 19:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Borrar desde el registro num X

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si lees bien esta sentencia que has puesto, notarás que MySQL hizo exactamente lo que le dijiste: Borró todo lo que fuera mayor a 10.
Entonces el error es que le pusiste un rango equivocado, simplemente le tenías que indicar que borrara todas las iguales o menores a 10...
o las que estuvieran entre 1 y 10:
Código sql:
Ver original
  1. DELETE FROM comentarios WHERE id <= 10;
  2. DELETE FROM comentarios WHERE id BETWEEN 1 AND 10;
That's same!.. Gracias che!! disculpen por mi error.. programando y programando uno va perdiendo la cordura de apoco me confundi xD
  #11 (permalink)  
Antiguo 20/06/2009, 01:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Borrar desde el registro num X

amigos, lo mismo yo he entendido mal, pero el otro problema, no resuelto aún, es que Frantopo no parece querer borrar los id menores a 10 sino los 10 primeros registros, tengan o no esos números de id. Eso supone un gran problema, porque para hacerlo en una consulta requeriría un delete sobre una subquery sobre la misma tabla (con un limit 10), algo al parecer imposible de momento en MySQL. He leído y visto en el manual un ejemplo en el que aconsejan crear una tabla temporal y luego hacer un cruce entre la temporal y la real para borrar los datos, pero tampoco sé si es lo mejor.
  #12 (permalink)  
Antiguo 20/06/2009, 08:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Borrar desde el registro num X

Cita:
Iniciado por jurena Ver Mensaje
amigos, lo mismo yo he entendido mal, pero el otro problema, no resuelto aún, es que Frantopo no parece querer borrar los id menores a 10 sino los 10 primeros registros, tengan o no esos números de id. Eso supone un gran problema, porque para hacerlo en una consulta requeriría un delete sobre una subquery sobre la misma tabla (con un limit 10), algo al parecer imposible de momento en MySQL. He leído y visto en el manual un ejemplo en el que aconsejan crear una tabla temporal y luego hacer un cruce entre la temporal y la real para borrar los datos, pero tampoco sé si es lo mejor.
Hola! exactamente...
no borra los registros entre 1 y 10

borra los registros con las ID entre 1 y la ID 10.
  #13 (permalink)  
Antiguo 20/06/2009, 09:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Borrar desde el registro num X

Estas hablando de los diez primeros registros con el orden por defecto después de un select?

No se si termino de entender bien, pero si es lo que creo, te recomiendo realizar una consulta como:
select id from tabla limit 10;

Incluir este resultado en un array separado por comas y posteriormente realizar un
delete from tabla where id in(array);

En este caso, debes valerte un poco del lenguaje de programación que uses, para armar el array.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 20/06/2009, 16:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar desde el registro num X

Esa es la forma más fácil. De hecho, puedes obtener el contenido del string con los valores separados por comas con la función GROUP_CONCAT(), aunque para usarlos directamente en SQL hay que hacerlo desde un Stored Procedures y con una sentencia preparada.
Código sql:
Ver original
  1. SELECT GROUP_CONCAT(id SEPARATOR ',') ids
  2. FROM tabla
  3. LIMIT 10;
Eso devuelve una cadena conteniendo los ID separados por comas de los 10 primeros registros.
Luego puedes usar la cadena devuelta (que se obtienen en un único registro) para armar la sentencia de borrado que te indicaron:
Código sql:
Ver original
  1. DELETE FROM tabla
  2. WHERE id IN(ids);
Quiero recalcarte dos cosas:
1) Si el ID es numérico, la cadena viene: "1,2,3,4,5", por lo que puedes usarla para crear la sentencia directamente. Pero si es alfanumérico debe tener un cambio en el string de SEPARATOR:
Código sql:
Ver original
  1. SELECT CONCAT('\'', GROUP_CONCAT(id SEPARATOR '\',\''), '\'') ids
  2. FROM tabla
  3. LIMIT 10;
ya que los valores alfanuméricos deben ir encerrados entre apóstrofes, y el SEPARATOR sólo determina los intermedios, pero no los de inicio y fin.
2) No se puede usar directamente el resultado de la consulta dentro de un stored procedure sin hacer uso de sentencias preparadas, porque no reconocerá el contenido de la variable. Es por una cuestión de tipos; para poder hacerlo debería usarse una variable de tipo BLOB o TEXT, y la sentencias no las soportan en MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 24/06/2009, 11:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 2
De acuerdo Respuesta: Borrar desde el registro num X

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Esa es la forma más fácil. De hecho, puedes obtener el contenido del string con los valores separados por comas con la función GROUP_CONCAT(), aunque para usarlos directamente en SQL hay que hacerlo desde un Stored Procedures y con una sentencia preparada.
Código sql:
Ver original
  1. SELECT GROUP_CONCAT(id SEPARATOR ',') ids
  2. FROM tabla
  3. LIMIT 10;
Eso devuelve una cadena conteniendo los ID separados por comas de los 10 primeros registros.
Luego puedes usar la cadena devuelta (que se obtienen en un único registro) para armar la sentencia de borrado que te indicaron:
Código sql:
Ver original
  1. DELETE FROM tabla
  2. WHERE id IN(ids);
Quiero recalcarte dos cosas:
1) Si el ID es numérico, la cadena viene: "1,2,3,4,5", por lo que puedes usarla para crear la sentencia directamente. Pero si es alfanumérico debe tener un cambio en el string de SEPARATOR:
Código sql:
Ver original
  1. SELECT CONCAT('\'', GROUP_CONCAT(id SEPARATOR '\',\''), '\'') ids
  2. FROM tabla
  3. LIMIT 10;
ya que los valores alfanuméricos deben ir encerrados entre apóstrofes, y el SEPARATOR sólo determina los intermedios, pero no los de inicio y fin.
2) No se puede usar directamente el resultado de la consulta dentro de un stored procedure sin hacer uso de sentencias preparadas, porque no reconocerá el contenido de la variable. Es por una cuestión de tipos; para poder hacerlo debería usarse una variable de tipo BLOB o TEXT, y la sentencias no las soportan en MySQL.
Graciaaaasssssssssssssssss me sirvio de 1000 =)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:09.