Dae pessoal, tudo bele?
Hoje vi um post em uma lista de MySQL de alguém querendo saber como checar registros repetidos em uma tabela. Bom a solução mais simples, clara, NO GAMBI é o uso do HAVING (contendo).
E então criemos a tabela de testes (jogo rápido!):
CREATE TABLE DADOSREPETIDOS (ID INT, NOME VARCHAR(200));
Agora vamos popular (tá, minha criativida é f*** mesmo, não pensei em nada melhor do que meia dúzia de personagens de TV :D):
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(1, 'John Due');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(2, 'Martha Kent');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(3, 'Nick Stokes');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(4, 'Scooby Doo');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(5, 'Bart Simpson');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(6, 'Clhoe Sullivan');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(7, 'Gil Grisson');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(8, 'Warrick Brown');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(9, 'Rachel Bilson');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(10, 'Clark Kent');
/* OS REPETIDOS */
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(11, 'John Due');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(12, 'Nick Stokes');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(13, 'Rachel Bilson');
INSERT INTO DADOSREPETIDOS (ID, NOME) VALUES(14, 'Bart Simpson');
E finalmente vamos selecionar os registros repetidos:
SELECT COUNT(*), d1.Nome
FROM JEAN.DADOSREPETIDOS d1
GROUP BY d1.Nome
HAVING COUNT(*) > 1
Resultado da query:
+----------+---------------+
| COUNT(*) | Nome |
+----------+---------------+
| 2 | Bart Simpson |
| 2 | John Due |
| 2 | Nick Stokes |
| 2 | Rachel Bilson |
+----------+---------------+
4 rows in set (0.00 sec)
Beleza, essa é a maneira mais rápida de se procurar por registros iguais em uma tabela. Sendo que ele pega somente a primeira ocorrência, CUIDADO ao deletados se for fazer isso... as vezes, para não quebrar uma sequência por exemplo, é preferivel deletar os posteriores.
Espero ter ajudado.
Ajudem o blog aí pessoal prestigiando os nossos anunciantes :D.
segunda-feira, abril 16, 2007
Mais um pouco de SQL BÁSICO!!!
Marcadores:
having,
mysql,
registros repetidos,
sql
Assinar:
Postar comentários (Atom)
5 comentários:
Olá,
Gostei, desculpe e ignorância, mas qual seria a solução elegante já que está é a mais simples(GAMBI)?
Valeu.
Essa! :P
Olha o que eu escrevi:
"Bom a solução MAIS simples, clara, NO (de não) GAMBI é o uso do HAVING..."
A maneira de fazer isso mais amadora (que eu vi por aí) foi em procedures dois cursores batendo as linhas... insano e perigoso! Usa o HAVING, o cara que inventou o SQL agradece hehehe :P
Continue vindo ao blog e comentando, fico grato!
Abraço
blz a dica funciona, mas tenho um problema parecido. preciso exibir em um relatório os registros duplicados e não apenas contá-los. Como ficaria?
Sei que este POST já é um tanto antigo, mas não encontrei nada ma WEB que pudesse me ajudar...
Tenho em uma tabela os campos id, asc1, asc2, asc3 e asc4, preciso retornar os dados repetidos que apareçam nos 4 campos ( asc1, asc2, asc3 e asc4) por exemplo: 13 - 6 vezes, 19 - 14 vezes, 36 - 9 vezes. Pergunto... É possível?
Wilson, não entendi a sua dúvida.
Tu queres fazer:
SELECT COUNT(asc1), COUNT(asc2)...
???
Postar um comentário