Recebi um banco de dados com alguns milhões de registros, mas aparentemente pode haver registros duplicados neles.
Um usuário insere dados no banco de dados e uma chave primária é gerada, no entanto, se o usuário inserir os mesmos dados novamente, uma nova chave primária será gerada para esses dados, mesmo que os dados já tenham sido inseridos antes. Não há verificações sobre isso.
Preciso procurar essas duplicatas, mas realmente não sei por onde começar. Primeiro pensei em concatenar todas as células, exceto a chave primária em uma subconsulta e depois contar essas linhas e ver quais têm uma contagem maior que 1.
cf.
pkey recipe fkey comment
1 toast 3 tasty
2 curry 2 spicy
3 curry 2 spicy
4 bread 1 crumbly
5 orios 2 cookies
Aqui as entradas de curry são idênticas e eu teria que deletar 1 delas.
No entanto, eu li que a concatenação é imprevisível no mysql e também parece um pouco errado para mim.
Alguma dica?
Suponha que sua tabela seja chamada
ingredients
. Tente o seguinte:Etapa 01) Crie uma tabela de chaves de exclusão vazia chamada
ingredients_delete_keys
Passo 02) Crie PRIMARY KEY no
ingredients_delete_keys
Passo 03) Indexe a
ingredients
tabela com fk,recipe,pkeyPasso 04) Preencher a
ingredients_delete_keys
tabelaPasso 05) Realize um DELETE JOIN na tabela de ingredientes usando chaves que não coincidam
Passo 06) Solte as teclas delete
Passo 07) Livre-se do
fk_recipe_pkey_ndx
índiceOK Aqui estão todas as linhas em um bloco...
De uma chance !!!
EMBARGO
Observe que usar a função MIN ajuda a manter a primeira pkey inserida para fk. Se você alternar para a função MAX, a última pkey inserida para fk é mantida.