GARANTIR DESCONTO

Fórum DUVIDA DELETE UTILIZANDO LEFT JOIN #572032

02/12/2016

0

Estou tentando realizar um dele utilizando left join para utilizar o parametro data , pois a minha tabela Nativedocument não tem , o select funciona perfeitamente mas quando eu tento utilizar o delete acima retorna o seguinte erro .

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

Se eu colocar a palavra exists , ele ignora meu parametro de data e deleta todas as linhas.

delete from NativeDocument where id in(
select a.id, b.idnativedocument
from NativeDocument a
left join DocumentInfo b on a.id = b.idnativedocument
where cast (b.createddate as date) BETWEEN '20161130' and '20161130')
Rodney Pereira

Rodney Pereira

Responder

Post mais votado

02/12/2016

O seu sub-select só deve retornar uma coluna, não duas, ou a.id ou b.idnativedocument.

Fabio Parreira

Fabio Parreira
Responder

Gostei + 1

Mais Posts

02/12/2016

Luiz Santos

Rodney.

Você jamais conseguiria fazer o que você quer com um LEFT JOIN.
Pense assim, com um LEFT, ele listaria todos os campos, mesmo que não exista contrapartida na outra tabela.
Assim você apagaria todos os seus dados.

Para esse caso, obrigatoriamente você tem que usar o INNER JOIN ou seu DELETE não vai funcionar direito

Grande abraço
Responder

Gostei + 1

02/12/2016

Rodney Pereira

Obrigado !!
Responder

Gostei + 0

02/12/2016

Rodney Pereira

Obrigado pela dica!!
Responder

Gostei + 0

14/12/2016

David Styveen

Bom dia, Rodney.

Acredito que a melhor maneira de fazer o delete seria utilizando o EXISTS.

delete from NativeDocument where exists (
select *
from DocumentInfo b
where NativeDocument.id = b.idnativedocument 
  and cast (b.createddate as date) BETWEEN '20161130' and '20161130'
)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar