Eliminar coincidentes en dos tablas
Publicado por Jorge (3 intervenciones) el 29/04/2014 15:09:47
Buenas tardes.
Tengo un problemilla al crear consulta SQL como consulta de eliminación de datos de una tabla. Me explico:
Tengo dos tablas (tabla1 y tabla2) y necesito crear una consulta que elimine las filas de la tabla1 que esten en la tabla2.
Mi problema es que en la tabla1 tengo 9 columnas y en la tabla2 solo 5 aunque esas coinciden con las 5 primeras de la tabla1.
Intentar crear la consulta mediante un diseño de consulta es imposible por lo que he estado buscando por internet y he encontrado la forma de hacerlo pero igualando 1 solo campo, yo necesito igualar 5 campos.
DELETE tabla1.*, tabla1.campo1, tabla1.campo2, tabla1.campo3, tabla1.campo4, tabla1.campo5
FROM tabla1;
WHERE ((( tabla1.campo1, tabla1.campo2, tabla1.campo3, tabla1.campo4, tabla1.campo5) In (SELECT DISTINCT tabla2.campo1, tabla2.campo2, tabla2.campo3, tabla2.campo4, tabla2.campo5)))";
Otra forma que he intentado es:
DELETE Tabla1.campo1, Tabla1.campo2, Tabla1.campo3, Tabla1.campo4, Tabla1.campo5, Tabla1.campo6, Tabla1.campo7, Tabla1.campo8, Tabla1.campo9, Tabla1.campo10, Tabla2.campo1, Tabla2.campo2, Tabla2.campo3, Tabla2.campo4, Tabla2.campo5
FROM Tabla1 INNER JOIN Tabla2 ON (Tabla1.campo5 = Tabla2.campo5) AND (Tabla1.campo4 = Tabla2.campo4) AND (Tabla1.campo3 = Tabla2.campo3) AND (Tabla1.campo2 = Tabla2.campo2) AND (Tabla1.campo1 = Tabla2.campo1)
WHERE (((Tabla2.campo1) Is Null) AND ((Tabla2.campo2) Is Null) AND ((Tabla2.campo3) Is Null) AND ((Tabla2.campo4) Is Null) AND ((Tabla2.campo5) Is Null));
¿A alguien se le ocurre alguna forma de solucionar mi problema?
Muchas gracias.
Un saludo
Tengo un problemilla al crear consulta SQL como consulta de eliminación de datos de una tabla. Me explico:
Tengo dos tablas (tabla1 y tabla2) y necesito crear una consulta que elimine las filas de la tabla1 que esten en la tabla2.
Mi problema es que en la tabla1 tengo 9 columnas y en la tabla2 solo 5 aunque esas coinciden con las 5 primeras de la tabla1.
Intentar crear la consulta mediante un diseño de consulta es imposible por lo que he estado buscando por internet y he encontrado la forma de hacerlo pero igualando 1 solo campo, yo necesito igualar 5 campos.
DELETE tabla1.*, tabla1.campo1, tabla1.campo2, tabla1.campo3, tabla1.campo4, tabla1.campo5
FROM tabla1;
WHERE ((( tabla1.campo1, tabla1.campo2, tabla1.campo3, tabla1.campo4, tabla1.campo5) In (SELECT DISTINCT tabla2.campo1, tabla2.campo2, tabla2.campo3, tabla2.campo4, tabla2.campo5)))";
Otra forma que he intentado es:
DELETE Tabla1.campo1, Tabla1.campo2, Tabla1.campo3, Tabla1.campo4, Tabla1.campo5, Tabla1.campo6, Tabla1.campo7, Tabla1.campo8, Tabla1.campo9, Tabla1.campo10, Tabla2.campo1, Tabla2.campo2, Tabla2.campo3, Tabla2.campo4, Tabla2.campo5
FROM Tabla1 INNER JOIN Tabla2 ON (Tabla1.campo5 = Tabla2.campo5) AND (Tabla1.campo4 = Tabla2.campo4) AND (Tabla1.campo3 = Tabla2.campo3) AND (Tabla1.campo2 = Tabla2.campo2) AND (Tabla1.campo1 = Tabla2.campo1)
WHERE (((Tabla2.campo1) Is Null) AND ((Tabla2.campo2) Is Null) AND ((Tabla2.campo3) Is Null) AND ((Tabla2.campo4) Is Null) AND ((Tabla2.campo5) Is Null));
¿A alguien se le ocurre alguna forma de solucionar mi problema?
Muchas gracias.
Un saludo
Valora esta pregunta


0