¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como usar o comando WITH com a declaração DELETE para excluir dados de outra tabela

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

Como usar o comando WITH junto com a declaração DELETE? Eu queria usar o conjunto de resultados da subconsulta para excluir de outra tabela.

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

A consulta anterior não está funcionando. Em vez de DELETE, se eu tentar com SELECT, funciona.

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

4 Respuestas

0
Cargando...

Preciso excluir os 10 primeiros registros. Referi-me a um link do stackoverflow. No entanto, não consigo atingir meu objetivo usando joins.

Portanto, peço ajuda aqui.

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

O SQL é o mesmo que na sua pergunta, apenas formatado para uma melhor legibilidade, com a observação de que a sintaxe é difícil de analisar. Consulte a publicação no stackoverflow para obter dicas sobre como lidar com isso.

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

Isso não está funcionando. Estou recebendo o seguinte erro

        org.jkiss.dbeaver.model.sql.DBSQLException: Erro SQL [257] [HY000]: SAP DBTech JDBC: [257] (na linha 154): Erro de sintaxe SQL: erro de sintaxe perto de "DELETE": linha 6 col 2 (na posição 154)
        
        
    
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Santosh,

Gerado por máquina?

Não é a declaração mais fácil de analisar por humanos, utilizando ROW_NUMBER, WITH e um SELECT *

Ver a discussão sobre WITH e MSSQL

O conselho é usar um inner join em vez de WITH e depois validar primeiro a declaração usando SELECT antes de convertê-la em um DELETE (mesma declaração, apenas mudando a palavra-chave).

WITH ESTUDANTES COMO( SELECT * FROM (  SELECT(ROW_NUMBER() OVER())AS rownum, res.* FROM    (SELECT * from some_table)   WHERE rownum <=10)) DELETE FROM some_table st, ESTUDANTES 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?