Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como Buscar No Bd


Alexandre Shammass

Pergunta

E aí pessoal, beleza? Sou novo aqui no fórum e também com o lance de MySQL, to precisando muito de ajuda...

Seguinte, eu importei um banco, mas por algum motivo grande parte das entradas duplicou, triplicou, quadruplicou..hehehe...iniciante é complicado...hehehe...

Enfim, to tentando achar um comando que selecione os duplicados e tal para que eu remova...algo do tipo:

SELECT * FROM accounts WHERE name = `%Silva%`

No exemplo acima estou tentando achar todas as pessoas que possuem Silva no nome afim de eu selecionar quais irei deletar...

Estou fazendo certo?! Existe outra forma?!

Valeu! =)

Testando aquele comando que passei anteriormente, não obtive resposta alguma... =/

Testando outro comando:

SELECT * FROM contacts WHERE last_name LIKE 50

a sintaxe está correta?! o 50 seria a % de 'matches'? como que eu devo proceder? Esse comando também não resultou em saída alguma. =/

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Para buscar os duplicados...

SELECT *, COUNT(*) reg_dup FROM tabela GROUP BY coluna HAVING reg_dup > 1

Note que você deve substituir tabela pelo nome da tabela e coluna pelo nome da coluna que quer testar quanto a duplicidade... isso vai apenas pegar os que tiverem mais de um registro... para apagar acho que usando o próprio MySQL teria que utilizar alguma tabela temporária... quando precisei fazer isso utilizei o próprio PHP para apagar... foi mais prático..

Link para o comentário
Compartilhar em outros sites

  • 0

Utilizando o comando fornecido, fiquei com uma duvida:

eu tenho por exemplo 4 entradas iguais para João Silva.

O que aparecerá após o comando fornecido:

-as 4 entradas possíveis;

-3 entradas;

-1 entrada.

===== editado =====

Mais uma dúvida...se eu quiser fazer isso com dois campos...porque como eu disse anteriormente, no meu caso, eu tenho dois campos separados first_name e last_name e quero que os dois estejam duplicados, ne, porque com certeza em meu BD existe varias pessoas com o mesmo primeiro nome e o mesmo sobrenome, porem poucos devem possuir os dois ao mesmo tempo! ;)

Alguma idéia?!

===== editado =====

Valeu! =D

Editado por Alexandre Shammass
Link para o comentário
Compartilhar em outros sites

  • 0

Isso vai retonar os campos que são duplicados... ou seja, se existir 1 milhão de colunas com o nome "Edgar", 500 mil com o nome "Serra", 1 coluna com o nome Francisco, essa consulta vai retornar apenas:

- Edgar

- Serra

Não vai retornar Francisco porque o "HAVING reg_dup > 1", ou seja, o contador tem que ser maior que um, e como eu dei um GROUP BY ele só exibe uma vez o dado repetido...

Mesmo que o primeiro e o último nome sejam iguais, não significa que sejam a mesma pessoa (João da Silva, por exemplo)... é melhor você pegar um campo que permite saber de forma única quem é quem...

Link para o comentário
Compartilhar em outros sites

  • 0

entendi, e se eu colocasse por exemplo first_name, last_name, telefone como os campos que devem ser iguais?! existe maneira de fazer isso?!

se utilizar o comando

SELECT *, COUNT(*) reg_dup FROM tabela GROUP BY coluna HAVING reg_dup > 1

mas ao invés de SELECT eu colocar REMOVE o que vai acontecer? ele deletar apenas uma entrada duplicada por vez?

valeu pela ajuda! =D

Editado por Alexandre Shammass
Link para o comentário
Compartilhar em outros sites

  • 0

Remove? Não existe no MySQL, existe o DELETE... pela lógica se você simplesmente substituir o SELECT pelo DELETE vai ter um erro na sintaxe, se você utilizar subquery:

DELETE FROM tabela WHERE id = (SELECT id, COUNT(*) reg_dup FROM tabela GROUP BY coluna HAVING reg_dup > 1)

Vai apagar todos os duplicados... se você quiser apagar só um, ou deixar, apenas um e apagar os outros, ai vai ter que usar tabela temporária, ou controlar isso no próprio script em que você for utilizar a query...

Link para o comentário
Compartilhar em outros sites

  • 0

usahsuhsau to me sentindo muito idiota!! era mais facil eu ter pedido isso pra voce desde o inicio não é??!

o que aconteceu exatamente foi que importando os contatos, por algum motivo ainda desconhecido, uma porrada deles duplicou, triplicou, quadriplicou e assim vai...e o que eu preciso fazer é exatamente remover os duplicados!

então esse comando vai fazer tudo isso pra mim?! =D

eu tenho que alterar apenas tabela e coluna?! então eu preciso achar algo que me dê exatamente os contatos duplicados, sem chance de poder haver mesmo sobrenome e/ou nome, ne?!

DELETE FROM tabela WHERE id = (SELECT id, COUNT(*) reg_dup FROM tabela GROUP BY coluna HAVING reg_dup > 1)

Editado por Alexandre Shammass
Link para o comentário
Compartilhar em outros sites

  • 0

ahhhh..entendi...eu precisava fazer "sobrar" uma...jesus..que trampo!!! aussaus

e com relacao ao

SELECT *, COUNT(*) reg_dup FROM tabela GROUP BY coluna HAVING reg_dup > 1

tem como eu colocar mais um termo pra ele verificar se é igual...seila, com um AND ou algo do tipo, tem que ser first e last name iguais, pra diminuir o numero de saidas...

Editado por Alexandre Shammass
Link para o comentário
Compartilhar em outros sites

  • 0

ok! valeu mesmo pela ajuda!! acho que tudo o que voce falou vai ser muito util nesse processo!! brigadão!

e a proposito, eu não conhecia o site, nem o forum, estou no inicio, e achei muito legal que as respostas no forum são bem rapidas, todos tentam ajudar! parabens a todos!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...