Buenas !!
Estoy realizando una migración de una tabla llamada "personas" con los siguientes campos: idpersona, documento, nombres, apellidos , direccion, edad. El idpersona es Auto incrementable.
Debo eliminar las personas que esten mas de una vez , lo hago con esta sentencia.
DELETE p1 FROM personas2012 p1
INNER JOIN personas2012 p2
WHERE p1.codpersona > p2.codpersona
AND p1.nombres=p2.nombres
AND p1.apellidos= p2.apellidos
Pero hay personas repetidas pero en el campo documento, se pueden encontrar numeros que representan el documento verdadero, o si esta persona tenia ese campo vacion se asigna este patron X100, Ejemplo :
Juan Vargas 232478
pablo Estepa 121212
Juan Vargas x100
Debo conservar a Juan Vargas 232478 en la tabla , me podrian ayudar por favor, no si es posible hacerlo
Por lo que te entendí quieres conservar solo un campo de la tabla y borrar los demás, ¿porqué no creas una tabla donde pases esos datos con la condición de que no sea el valor x100 y después ya borras la tabla anterior por completo?
¡Saludos!
te dejo ejemplo de estos dos casos. El primero, necesitas saber tus clientes reales, sin tener los repetidos, y los segundo, eliminar a tus clientes repetidos.
Pues bien, lo primero que te sugiero es crear una especie de tabla temporal, que tenga las mismas características de tu tabla de clientes. Luego mandes a esta tabla todos los usuarios agrupados.
En SQL Server seria así:
INSERT INTO tablaTemporal
select Campo1, Campo2, Campo3, .... (Todos los campos)
from Clientes
group by Campo1, Campo2, Campo3, .... (Todos los campos)
Ya con esto tendrías tu tabla temporal con la información actualizada. Si quieres, puedes eliminar los datos de la primer tabla, y luego cargar dicha tabla con los datos de la tabla temporal, simplemente invirtiendo la consulta, algo así:
TRUNCATE TABLE Clientes
INSERT INTO Clientes
select Campo1, Campo2, Campo3, .... (Todos los campos)
from tablaTemporal
group by Campo1, Campo2, Campo3, .... (Todos los campos)
Espero te siva, saludos.