Mostrando postagens com marcador registros repetidos. Mostrar todas as postagens
Mostrando postagens com marcador registros repetidos. Mostrar todas as postagens

segunda-feira, abril 16, 2007

Mais um pouco de SQL BÁSICO!!!

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.