Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

MYSQL remove duplicates

Posted on 2014-10-09
4
Medium Priority
?
268 Views
Last Modified: 2014-10-26
Hi All I know this is really simple but im a bit of a dunse with MYSQL so wanted a bit of advice,  I have a table "Activefeed" which has a coumn in it "email".  I would like to remove all of the rows which have a duplicate email addresss,  i.e if there are 2 rows with the same email address delete on of the rows and so on.  I thought this would of been easy but there is a lot of different options which creating and removing rows etc,   all I want to end up with is my table "activefeed" to effectively be cleaned and only have 1 row per email address and all duplicates deleted.  

Apologies but in  your answer can you treat me like an idiot ;)
0
Comment
Question by:ncomper
  • 2
4 Comments
 
LVL 25

Expert Comment

by:chaau
ID: 40372011
There is an easy way to remove the duplicates and to prevent them to re-appear in future. It is by using a UNIQUE index on the column. There is a MySQL syntax for the index creation that allows to remove any duplicate rows:
    ALTER IGNORE TABLE activefeed ADD UNIQUE INDEX idx_email (email);

Open in new window

By using IGNORE keyword you instruct MySQL to remove duplicates. However, there is no control on what record is chosen by MySQL. For example, there are emails attached to different accounts. You may know that email is really for account B rather than A, because account A has not used your system for a few years now. MySQL does not know this, and it can delete the email for account B instead. If you have ideas what records to keep, share them with us and we can help you
0
 
LVL 5

Author Comment

by:ncomper
ID: 40372386
Error Code: 1062. Duplicate entry 'geoff.hall@allihashhill.co.uk' for key 'idx_email'
 
Hi i get this error when I run it,  thank you,  Although if possible I would like to know a way that it can run using delete / distinct commands if possible (have also seen code where you create a new temp table
0
 
LVL 25

Expert Comment

by:chaau
ID: 40372395
It is very strange. According to this document (http://dev.mysql.com/doc/refman/5.1/en/alter-table.html) the IGNORE keyword must automatically remove duplicates. What version of MySQL are you using?
0
 
LVL 7

Accepted Solution

by:
Stampel earned 1500 total points
ID: 40372495
Maybe you can try to create a new empty table with the same structure as your original table, then just add unique constrait on your email field. After this, just run :
insert into table_dest (select * from table_src);

the duplicate rows will not be allowed !
0

Featured Post

NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Recursive SQL is one of the most fascinating and powerful and yet dangerous feature offered in many modern databases today using a Common Table Expression (CTE) first introduced in the ANSI SQL 99 standard. The first implementations of CTE began ap…
The title says it all. Writing any type of PHP Application or API code that provides high throughput, while under a heavy load, seems to be an arcane art form (Black Magic). This article aims to provide some general guidelines for producing this typ…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses
Course of the Month13 days, 13 hours left to enroll

580 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question