[Resolvido]Dúvida em SELECT dentro do outro em MySQL
6 respostas
Ivan_Alves
Oi preciso fazer um select aninhado em MySQL porém o que eu estou tentando não está dando certo por exemplo caso ele não encontre nenhum dado referente a aquele usuário em uma tabela então retorne o os dados do primeiro select é mais ou menos assim
SELECT * FROM teste1 WHERE (SELECT * FROM teste2 WHERE teste2.id_usuario = 0 AND teste2.id_conta!=teste1.id) NOT EXISTS
//por exemplo se a tabela teste2 não for encontrado nenhum dado então execute o primeiro select da tabela teste1
Consegui usei NOT EXISTS na antes do 2 select ficou mais ou menos assim:
ederfreitas
Pressuponho que você está utilizando FK entre as duas tabelas certo? E Quer listar todos os registros independente se tenha referência ou não tabela 2. Porque não utilizar usar junção de tabelas utilizando left join que retornará ambos os registros?
Ivan_Alves
ederfreitas:
Pressuponho que você está utilizando FK entre as duas tabelas certo? E Quer listar todos os registros independente se tenha referência ou não tabela 2. Porque não utilizar usar junção de tabelas utilizando left join que retornará ambos os registros?
Na verdade a intenção é só retornar o registro se ele não haver no 2º SELECT
daveiga
Bem, tente usar o IN no lugar do EXISTS , assim:
pmlm
[quote=daveiga]Bem, tente usar o IN no lugar do EXISTS , assim:
Ns realidade, o EXISTS deverá ser bem mais eficiente que o IN. O EXISTS irá parar assim que encontrar um registo que obedeça à condição, enquanto o IN irá executar todo o select para depois comparar valores.
Ivan_Alves
[quote=pmlm]
daveiga:
Bem, tente usar o IN no lugar do EXISTS , assim:
Ns realidade, o EXISTS deverá ser bem mais eficiente que o IN. O EXISTS irá parar assim que encontrar um registo que obedeça à condição, enquanto o IN irá executar todo o select para depois comparar valores.