Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/10/2013, 10:47
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: eliminar registros duplicados mas antiguos según 2 campos

Vamos por parte:
1) ¿El ID de esa tabla es usada como FK en alguna otra?
2) ¿Por qué razon se "duplican" registros. SI es una tabla que registra los diferentes exámenes realizados a una persona, por lo pronto debería tener un campo fecha, y por otro lado no debería eliminarse ningún registro, ya que al hacerlo se pierde trazabilidad histórica.
3) Si lo que quieres es desactivar los registros viejos, lo estándar es agregar un campo de fecha de baja, que sera nulable y que sólo se cargue con un valor al momento de desactivarlo.
4) Si lo que quieres es realmente eliminarlos, lo primero que debes hacer es ubicar el ID de los mas recientes de cada persona, lo que (si es lo que dices) debería ser mas o menos así:
Código MySQL:
Ver original
  1. MAX(id) id
  2. FROM examen_otros_laboratorio
obviamente estoy suponiendo que identificas a una persona por su documento.
5) Como te dije, la clausula TEMPORARY sólo funciona si usas la misma conexión a la base, por lo cual no puedes probar esto en phpMyadmin, porque este crea una conexión para ejecutar cada sentencia, aunque tu no lo veas, por lo que la tabla desaparece luego de ejecutar la sentencia. Lo que te he sugerido sólo funcionará a nivel aplicación.
6) El servidor se te muere porque el GROUP BY es una cláusula asesina de performance, muy poco práctica si los campos no están indexados, o bien si son pocos registros. Pero si usas miles o centenares de miles...

Postea la estructura de las tablas, para poder entender un poco el problema. Si no sabes recuperarla, usa:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE examen_otros_laboratorio
y hazlo por cada una de las tablas relacionadas para lo que deseas hacer. Copia el resultado (ampliándolo si phpMyadmin no te muestra todo el CREATE), y postealo.
Entonces veremos..
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)