Languages
[Edit]
EN

MySQL - delete all duplicated rows except one

0 points
Created by:
Teilsa
1255

In this article, we would like to show you how to delete duplicated rows except one in MySQL.

Quick solution:

DELETE n1
FROM `users` n1, `users` n2 
WHERE n1.id > n2.id AND n1.name = n2.name

 

Practical example

To show how to delete duplicated rows except one, we will use the following users table:

MySQL - example data used to delete duplicated rows except one
MySQL - example data used to delete duplicated rows except one

Note:

At the end of this article you can find database preparation SQL queries.

Example 1 - keep row with the lowest id value

In this example, we will delete all the rows with duplicated name except one, with the lowest id value.

Query:

DELETE n1
FROM `users` n1, `users` n2 
WHERE n1.id > n2.id AND n1.name = n2.name;

Result:

delete duplicated rows except one - result
delete duplicated rows except one - result

Example 2 - keep row with the highest id value

In this example, we will delete all the rows with duplicated name except one, with the highest id value.

Query:

DELETE n1
FROM `users` n1, `users` n2 
WHERE n1.id < n2.id AND n1.name = n2.name;

Result:

delete duplicated rows except one - result
delete duplicated rows except one - result

Database preparation

create_tables.sql file:

CREATE TABLE `users` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(100) NOT NULL,
	`email` VARCHAR(100) NOT NULL,
	`country` VARCHAR(15) NOT NULL,
	PRIMARY KEY (`id`)
)
ENGINE=InnoDB;

insert_data.sql file:

INSERT INTO `users`
	(`name`, `email`, `country`)
VALUES
	('Tom', 'tom1@email.com', 'Poland'),
	('Tom', 'tom2@email.com', 'Poland'),
   ('Tom', 'tom3@email.com', 'Poland'),
   ('Kim', 'kim1@email.com', 'Vietnam'),
   ('Kim', 'kim2@email.com', 'Vietnam'),
   ('Chris', 'chris1@email.com', 'Spain'),
	('Chris', 'chris2@email.com', 'Spain'),
	('Chris', 'chris3@email.com', 'USA');
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.

MySQL - Problems

MySQL - delete all duplicated rows except one
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join