Fórum Ajuda com Select #409816

25/11/2011

0

Tenho uma tabela (CADASTRO) assim:
Campos
- EMAIL
- NOME

Registros
joao@ig.com.br João Bernardes
paulo@ig.com.br Paulo da Silva
carlos@ig.com.br Carlos Rocha
joao@ig.com.br João Cortes


Quero fazer um select que liste os dois campos, mas apenas 1 registro por email, ou seja, descartar o segundo, terceiro,... registros cujo e-mails seja repetido.

Tentei assim:
SELECT DISCTINCT(EMAIL), NOME FROM CADASTRO e também SELECT DISCTINCT EMAIL, NOME FROM CADASTRO
Ambos os select trazem 4 linhas, ou seja, joao@ig.com.br aparece duas vezes na lista, o que não me serve.

Se fizer assim:
SELECT DISCTINCT EMAIL FROM CADASTRO
Aí até traz apenas as 3 linha que quero, mas, nesse caso, não traz o valor de NOME.

Alguém pode me ajudar com esse select?

Uso Firebird 2.1

Obrigado
Valdir Dill

Valdir Dill

Responder

Posts

25/11/2011

João Sobrinho

Colega, vê se ajuda:

SELECT
DISTINCT A.EMAIL,
(SELECT FIRST 1 NOME FROM CADASTRO B WHERE B.EMAIL = A.EMAIL) AS EMAIL
FROM CADASTRO A;
Responder

Gostei + 0

25/11/2011

Valdir Dill

Colega, vê se ajuda:

SELECT
DISTINCT A.EMAIL,
(SELECT FIRST 1 NOME FROM CADASTRO B WHERE B.EMAIL = A.EMAIL) AS EMAIL
FROM CADASTRO A;


Funcionou perfeitamente. Obrigado.
Responder

Gostei + 0

27/11/2011

Emerson Nascimento

o uso de sub-selects deve ser evitado sempre que possível, pois degrada a performance.

no seu caso bastaria apenas:

SELECT EMAIL, MIN(NOME)
FROM CADASTRO
GROUP BY EMAIL
Responder

Gostei + 0

27/11/2011

Emerson Nascimento

o uso de sub-selects deve ser evitado sempre que possível, pois degrada a performance.

no seu caso bastaria apenas:

SELECT EMAIL, MIN(NOME)
FROM CADASTRO
GROUP BY EMAIL
Responder

Gostei + 0

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

Aceitar