Cita: No consigo quedarme con una persona de cada, por ejemplo con una de 20 pero me borra todas las de 23, esta es la consulta que tengo hecha
Precisamente ese es el tipo de problemas a que me refiero.
La única forma de poder ayudarte con precisión sería estar sentado frente a tu PC realizando el análisis de datos necesario, cosa que no puede ser.
Como pareces sugerir, el problema que tienes requiere un análisis de datos puntual.
Primero, mi sugerencia es que separes en una tabla todos aquellos casos que están efectivamente duplicados. De nada te servirá mirar toda la tabla si no toda la tabla tiene el mismo problema.
Uno de los problemas que tienes es que no puedes hacer un SELECT y DELETE en la misma sentencia, por lo que la única forma práctica sería volcar todos los datos a otra tabla. ara ello vamos a probar de guardar aquellas personas e mayor edad (el principio para guardar los menores sólo requiere cambiar la función:
Guardar sin discriminar edades:
Discriminando edades máximas requiere poner todos los campos para poder indicar el agrupamiento correctamette
donde a, b, c, d, e, f, g y h, son los nombres de los campos de la tabla en el mismo orden de la tabla, por lo que "MAX(edad) edad" deberá ocupar el lugar correspondiente a la edad.
Este agrupamiento generará una tabla simplificada que luego usamos para borrar los excedentes por medio de su PK:
Mas o menos esto, podría andar....
Esto es lo que se denomina en ocasiones "migrar datos entre tablas" o "depurar tablas", y como verás no se peude hacer en una sola sentencia.
Lo principal, una vez que termines esto es asegurarte que la fuente de datos, es decir, el formulario desde el cual estos registros se ingresan, tenga una validación que impida insertar un teléfono duplicado.
Una forma drástica es declarar el telefono como UNIQUE. Eso generará un error de registro duplicado cada vez que se intente ingresar un teléfono que ya exista.