EN
MS SQL Server - find duplicated values in multiple columns
0
points
In this article, we would like to show you how to find duplicated values in multiple columns in MS SQL Server.
Quick solution:
SELECT
[column1], COUNT([column1]),
[column2], COUNT([column2]),
[columnN], COUNT([columnN])
FROM
[table_name]
GROUP BY
[column1],
[column2],
[columnN]
HAVING
(COUNT([column1]) > 1) AND
(COUNT([column2]) > 1) AND
(COUNT([columnN]) > 1);
Practical example
To show how to find duplicated values in multiple columns, we will use the following table:
Note:
At the end of this article you can find database preparation SQL queries.
Example
In this example, we will display duplicated users and countries where:
name_quantity
- number of duplicated names,country_quantity
- number of duplicated countries.
Note:
This works only when both
name
andcountry
in a row are duplicated.
Query:
SELECT
[name], COUNT([name]) AS 'name_quantity',
[country], COUNT([country]) AS 'country_quantity'
FROM
[users]
GROUP BY
[name],
[country]
HAVING
(COUNT([name]) > 1) AND
(COUNT([country]) > 1);
Result:
Note:
Notice that
Chris
user bothname_quantity
andcountry_quantity
equals2
because one user is from a different country.
Database preparation
create_tables.sql
file:
CREATE TABLE [users] (
[id] INT IDENTITY(1,1),
[name] VARCHAR(100) NOT NULL,
[email] VARCHAR(100) NOT NULL,
[country] VARCHAR(15) NOT NULL,
PRIMARY KEY ([id])
);
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');