Ajuda com Select

Firebird

25/11/2011

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

Curtidas 0

Respostas

João Sobrinho

João Sobrinho

25/11/2011

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;
GOSTEI 0
Valdir Dill

Valdir Dill

25/11/2011

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.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/11/2011

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
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/11/2011

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
GOSTEI 0
POSTAR