none
Cursores RRS feed

  • Pregunta

  • Hola a todos,  bueno tengo dos tablas y deseo eliminar de la primera tabla aquellos registros que no se encuentran en la segunda tabla usando cursores. Como puedo hacerlo?
    sábado, 25 de noviembre de 2017 17:30

Respuestas

  • Para eso no tiene ningún sentido usar cursores. Basta con ejecutar (por ejemplo) una sentencia de este estilo:

    Delete from Tabla1 where Codigo not in (Select Codigo from Tabla2)

    Si no obstante insistes en usar cursores, puedes abrir un cursor de lectura escritura sobre la primera tabla, iterar sobre él, por cada fila buscarla en la segunda, y hacer un delete... where current of elcursor. Pero será muy poco eficiente.

    sábado, 25 de noviembre de 2017 18:03

Todas las respuestas

  • Para eso no tiene ningún sentido usar cursores. Basta con ejecutar (por ejemplo) una sentencia de este estilo:

    Delete from Tabla1 where Codigo not in (Select Codigo from Tabla2)

    Si no obstante insistes en usar cursores, puedes abrir un cursor de lectura escritura sobre la primera tabla, iterar sobre él, por cada fila buscarla en la segunda, y hacer un delete... where current of elcursor. Pero será muy poco eficiente.

    sábado, 25 de noviembre de 2017 18:03
  • Con tu permiso, yo cambiaria el IN (), por el EXISTS (), es mucho mas eficiente, mas si hay un gran numero de registros
    lunes, 27 de noviembre de 2017 17:20
  • Escríbelo en SSMS y pídele el plan de ejecución. Verás que el optimizador de consultas optimiza las dos exactamente igual, dando lugar a dos planes de ejecución idénticos. Así que ninguna de las dos es más eficiente que la otra. Es una mera cuestión de preferencias, en el sentido de cuál de las dos te resulta más clara y legible.
    lunes, 27 de noviembre de 2017 17:29
  • DELETE TABLA1 FROM TABLA1 A LEFT JOIN TABLA2 B ON A.ID = B.ID WHERE B.ID IS NULL.
    miércoles, 29 de noviembre de 2017 3:16
  • Así es. el tema del in y el exists son "mitos y legendas" :) 

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 29 de noviembre de 2017 7:37
    Moderador