DELETE de un SELECT (URGENTE!!)
Publicado por Alejandro (3 intervenciones) el 12/01/2012 22:01:40
Hola,
Necesito borrar los registros de una tabla que coincidan con este SELECT:
SELECT PREFIL, PRETIP, PRECOD, PRECAL, PREITM - 9000, PREDES, PREHAS, PREDTO FROM TOPDAP.PREDEPNA WHERE PREITM > 9000
Es decir, necesito borrar todos los registros que coincidan con todos los campos iguales a los registros cuyo PREITM sea mayor a 9000 solo que necesito borrar los que tienen ese PREITM -9000.
Al principio se me ocurrió hacer un:
DELETE FROM TOPDAP.PREDEPNA
WHERE EXISTS (SELECT PREFIL, PRETIP, PRECOD, PRECAL, PREITM - 9000, PREDES, PREHAS, PREDTO FROM TOPDAP.PREDEPNA WHERE PREITM > 9000)
GRAVE ERROR!! Me borró toda la tabla. Ahora pedí una restauración y se me ocurrió hacer lo siguiente:
SELECT P1.PREFIL, P1.PRETIP, P1.PRECOD, P1.PRECAL, P1.PREITM, P1.PREDES, P1.PREHAS, P1.PREDTO
FROM TOPDAP.PREDEPNA AS P1, TOPDAP.PREDEPNA AS P2
WHERE P1.PREFIL = P2.PREFIL AND P1.PRETIP = P2.PRETIP AND P1.PRECOD = P2.PRECOD AND P1.PRECAL = P2.PRECAL AND P1.PREDES = P2.PREDES AND P1.PREHAS = P2.PREHAS AND P1.PREDTO = P2.PREDTO
AND P1.PREITM = P2.PREITM - 9000 AND P2.PREITM >= 9000
El SELECT selecciona los registros que deseo borrar pero necesito transformar este SELECT en un DELETE.
Alguno se le ocurre como?
Muchas gracias.
Necesito borrar los registros de una tabla que coincidan con este SELECT:
SELECT PREFIL, PRETIP, PRECOD, PRECAL, PREITM - 9000, PREDES, PREHAS, PREDTO FROM TOPDAP.PREDEPNA WHERE PREITM > 9000
Es decir, necesito borrar todos los registros que coincidan con todos los campos iguales a los registros cuyo PREITM sea mayor a 9000 solo que necesito borrar los que tienen ese PREITM -9000.
Al principio se me ocurrió hacer un:
DELETE FROM TOPDAP.PREDEPNA
WHERE EXISTS (SELECT PREFIL, PRETIP, PRECOD, PRECAL, PREITM - 9000, PREDES, PREHAS, PREDTO FROM TOPDAP.PREDEPNA WHERE PREITM > 9000)
GRAVE ERROR!! Me borró toda la tabla. Ahora pedí una restauración y se me ocurrió hacer lo siguiente:
SELECT P1.PREFIL, P1.PRETIP, P1.PRECOD, P1.PRECAL, P1.PREITM, P1.PREDES, P1.PREHAS, P1.PREDTO
FROM TOPDAP.PREDEPNA AS P1, TOPDAP.PREDEPNA AS P2
WHERE P1.PREFIL = P2.PREFIL AND P1.PRETIP = P2.PRETIP AND P1.PRECOD = P2.PRECOD AND P1.PRECAL = P2.PRECAL AND P1.PREDES = P2.PREDES AND P1.PREHAS = P2.PREHAS AND P1.PREDTO = P2.PREDTO
AND P1.PREITM = P2.PREITM - 9000 AND P2.PREITM >= 9000
El SELECT selecciona los registros que deseo borrar pero necesito transformar este SELECT en un DELETE.
Alguno se le ocurre como?
Muchas gracias.
Valora esta pregunta


0