DUVIDA DELETE UTILIZANDO LEFT JOIN
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')
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
Curtidas 0
Melhor post
Fabio Parreira
02/12/2016
O seu sub-select só deve retornar uma coluna, não duas, ou a.id ou b.idnativedocument.
GOSTEI 1
Mais Respostas
Luiz Santos
02/12/2016
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
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
GOSTEI 1
Rodney Pereira
02/12/2016
Obrigado !!
GOSTEI 0
Rodney Pereira
02/12/2016
Obrigado pela dica!!
GOSTEI 0
David Styveen
02/12/2016
Bom dia, Rodney.
Acredito que a melhor maneira de fazer o delete seria utilizando o EXISTS.
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' )
GOSTEI 0