Testando duas tabelas e pegando apenas resultado que contem em uma que não contem na outra

SQL Server

SQL

SQLite

03/07/2018

Boa noite galera, estou fazendo um teste e fiz um select na tabela CLIENTES, após fiz uma cópia (completa até cabeçalho) dessas informações e coloquei
tudo no Excel e a partir dele (Excel) criei uma tabela com o nome CLIENTESX no meu banco (importei a tabela).
depois fiz um insert na tabela CLIENTES com um usuário diferente do que tem no CLIENTESX
(MESA DE TESTE ORGANIZADA, AGORA, VAMOS AO TESTE)
fiz o seguinte select:
select *
from CLIENTES a
left join CLIENTESX b on a.IdCliente = b.IdCliente
where a.NomeCliente <> b.NomeCliente

resultado: só tive o nome das colunas.
Intenção: achar só o usuário que não existe na tabela CLIENTESX

Alguém poderia me dá uma força? Muito obrigado
Demetrio Lopes

Demetrio Lopes

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

04/07/2018

select a.*
from CLIENTES a
left join CLIENTESX b on b.IdCliente = a.IdCliente
where b.NomeCliente is null
GOSTEI 1

Mais Respostas

Fernando C

Fernando C

03/07/2018

tente sem o "where".
GOSTEI 0
Demetrio Lopes

Demetrio Lopes

03/07/2018

como assim?
GOSTEI 0
Luiz Santos

Luiz Santos

03/07/2018

Bom dia Demetrio.
Quando você usa um LEFT JOIN você está dizendo para listar todos os dados da tabela a, mesmo que não exista a contrapartida na tabela b.

Nesse caso, quando ele trouxer o registro "novo" que você cadastrou em a, para b ele vai ser nulo.

Quando trabalhamos com campos nulo, não conseguimos usar campo da tabela a <> de campo da tabela b.

Você precisa usar no where campo da tabela b IS NULL.

Existem outras formas de trazer esse dado, usando o NOT IN ou NOT EXISTS.

Faça o teste e avisa se deu certo.

Grande abraço
GOSTEI 1
Demetrio Lopes

Demetrio Lopes

03/07/2018

pow que aula, valeu mesmo mano, deu certo, muito obrigado Luiz Fernando
GOSTEI 0
Demetrio Lopes

Demetrio Lopes

03/07/2018

Emerson: obrigado cara, deu certo!! valeu mesmo
GOSTEI 0
POSTAR