Duplicar las entradas de una tabla no tiene relación con el SELECT. El SELECT
lee los datos, pero no los inserta, y en su caso la duplicidad está dada por los JOIN que se indiquen en la lectura.
La duplicidad de entrada de datos a una tabla muestra errores de diseño de la estructura de datos y una programación defectuosa de las altas, desde el momento en que no se estén haciendo las debidas validaciones
antes de enviar el INSERT a la base.
De todos modos, lo que nos estás diciendo es completamente insuficiente para poder darte más consejos.
Respecto a DISTINCT, tienes un error de comprensión de su uso.
DISTINCT es una cláusula del SELECT que le indica al DBMS (MySQL en este caso) que devuelva registros diferentes para un SELECT dado. Pero en SQL se considera
diferente que entre dos registros cualesquiera
todos los datos de cada columna sean diferentes entre ambos registros, lo que quiere decir que si una tabla tuviese 38 campos, y dos registros tuviesen datos iguales en 37 de ellos, como el 38 sería diferente entre ambos, MySQL los interpretará como
diferentes.
¿Se entiende?
Ejemplificando:
Cita: 12 35 78 9 54 2 988765 75 45 7 003 1567
12 35 78 9 54 2 988763 75 45 7 003 1567
Son diferentes para el SQL, porque en la séptima columna hay datos levemente distintos (988765 y 988763).
Esto significa que DISTINCT no tiene nada que ver con la solución a tu problema, que como te dije, es de otro orden (validaciones).