Sélectionnez des doublons dans SQL
SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1
Cucumberman
SELECT username, email, COUNT(*)
FROM users
GROUP BY username, email
HAVING COUNT(*) > 1
WITH CTE AS(
SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
RN = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1
WITH cte AS (
SELECT
contact_id,
first_name,
last_name,
email,
ROW_NUMBER() OVER (
PARTITION BY
first_name,
last_name,
email
ORDER BY
first_name,
last_name,
email
) row_num
FROM
sales.contacts
)
DELETE FROM cte
WHERE row_num > 1;
/*
Code language: SQL (Structured Query Language) (sql)
In this statement:
First, the CTE uses the ROW_NUMBER() function to find the duplicate rows
specified by values in the first_name, last_name, and email columns.
Then, the DELETE statement deletes all the duplicate rows but keeps only one
occurrence of each duplicate group.*/
-- Oracle
DELETE FROM films
WHERE rowid NOT IN (
SELECT min(rowid)
FROM films
GROUP BY title, uk_release_date
);
# Step 1: Copy distinct values to temporary table
CREATE TEMPORARY TABLE tmp_user (
SELECT id, name
FROM user
GROUP BY name
);
# Step 2: Remove all rows from original table
DELETE FROM user;
# Step 3: Remove all rows from original table
INSERT INTO user (SELECT * FROM tmp_user);
# Step 4: Remove temporary table
DROP TABLE tmp_user;
WITH CTE AS(
SELECT [col1]
,[col2]
,[col3]
,
RN = ROW_NUMBER()OVER(PARTITION BY [col1],[col2],[col3] ORDER BY [col1],[col2],[col3])
FROM [dbo].[table1]
)
DELETE FROM CTE WHERE RN > 1