viernes, 26 de julio de 2013

Delete de registro de tabla de subconsulta que incluye la tabla

El problema que tuenia era que tengo que eliminar un conjunto muy grande de registos que se obtienen de una subconsulta la cual incluye la tabla en cuestion y alguna otra.
Lo primero que probe es:

Delete from tabla1 where dato1 in (select dato1 from tabla1 t1, tabla2 t2 where t1.id =t2.id and ......);

esto no funciona ya que en la subconulta se utiliza la tabla que se va a eliminar, entonces busque una solucion por consulta sql, ya que por store procedure se puede hacer (o por algun programa en cualquier lenguaje).

Por consulta sql se puede hacer, esto lo probe en MySql pero asumo que en algun otro motor debe de funcionar.


DELETE FROM tabla1 WHERE dato1 IN (
    SELECT * FROM (
        select t1.dato1
        from tabla1 t1, tabla2 t2
        where t1.id .....
    ) as tab_aux
);

No hay comentarios: