¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo utilizar el comando WITH con la declaración DELETE para eliminar datos de otra tabla

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 22 Vistas
0
Cargando...

¿Cómo usar el comando WITH junto con la declaración DELETE? Quería usar el conjunto de resultados de la subconsulta para eliminar de otra tabla.

WITH ESTUDIANTES COMO ( SELECT * FROM ( SELECT (ROW_NUMBER() OVER()) COMO rownum, res.* FROM ( select * from some_table) WHERE rownum <= 10 ))
DELETE FROM some_table st, ESTUDIANTES sd where st.stud_id = sd.stud_id and st.type=sd.type; 

La consulta anterior no está funcionando. En lugar de DELETE, si intento con SELECT, funciona.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Tengo que eliminar los 10 primeros registros. Me referí a un enlace de stackoverflow. Pero usando joins, no puedo lograr mi objetivo.

Por lo tanto, pido ayuda aquí.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

El SQL es el mismo que en tu pregunta, solo formateado para una mejor legibilidad con la observación de que la sintaxis es difícil de analizar. Consulta la publicación en stackoverflow para obtener consejos sobre cómo abordar esto.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Esto no está funcionando. Recibo el siguiente error

        org.jkiss.dbeaver.model.sql.DBSQLException: Error SQL [257] [HY000]: SAP DBTech JDBC: [257] (en 154): error de sintaxis SQL: error de sintaxis cerca de "DELETE": línea 6 col 2 (en la posición 154)
        
        
    
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Santosh,

¿Generado por máquina?

No es la declaración más fácil de analizar por humanos, utilizando ROW_NUMBER, WITH y un SELECT *

Ver la discusión sobre WITH y MSSQL

El consejo es usar un inner join en lugar de WITH y luego validar primero la declaración usando SELECT antes de convertirla en un DELETE (misma declaración, solo cambiando la palabra clave).

WITH ESTUDIANTES COMO( SELECT * FROM (  SELECT(ROW_NUMBER() OVER())AS rownum, res.* FROM    (SELECT * from some_table)   WHERE rownum <=10)) DELETE FROM some_table st, ESTUDIANTES sd   WHERE st.stud_id = sd.stud_id     AND st.type=sd.type;
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?