Bittu14 Ответов: 3

Как удалить дубликаты данных из таблицы?


У меня есть таблица вызова EMP, которая имеет 3 столбца (EMP_NAME, EMP_MAIL, EMP_CONTACT) и не имеет никакого первичного ключа. Теперь я хочу удалить дублирующуюся строку из этой таблицы с помощью встроенного запроса SQL.

Ниже приведен пример.

emp_name emp_mail emp_contact

Arijita АВСD@АБВ 8122020706
Соревнования АВС@ху 8122020705
Соревнования АВС@ху 8122020705
Соревнования АВС@ху 8122020705

Я ищу запрос, который поможет мне удалить дубликаты значений.

Выход должен быть :

emp_name | / emp_mail | / emp_contact

Arijita | / abcd@xyz | / 8122020706
Arijit | / abc@xy | / 8122020705

Что я уже пробовал:

Я выяснил, сколько там дубликатов.

3 Ответов

Рейтинг:
27

Suvendu Shekhar Giri

Вы можете написать запрос для этого примерно так-

;WITH CTE(emp_name,emp_mail,emp_contact,SlNo)
AS
(
    SELECT emp_name,emp_mail,emp_contact,ROW_NUMBER() OVER(PARTITION BY emp_name,emp_mail,emp_contact ORDER BY emp_name,emp_mail,emp_contact) AS SlNo
    FROM Demo
)
DELETE FROM CTE WHERE SlNo > 1


Для получения более подробной информации, пожалуйста, посетите мой пост в блоге по адресу-
SQL Server: удаление / обновление дубликатов записей | технологические переговоры[^]

Надеюсь, это поможет :)


Richard Deeming

Если вы указываете псевдонимы столбцов в "заголовке" CTE, вы должны указать псевдоним для все столбцы. В настоящее время вы пропали без вести SlNo.

Любой:
WITH CTE(emp_name,emp_mail,emp_contact,SlNo) As ...

или:
WITH CTE As ...

будет работать.

Suvendu Shekhar Giri

Спасибо Ричарду, что указал на ошибку.. обновил ответ.

Karthik_Mahalingam

5

Рейтинг:
2

mansi chaudhari

;С CTE
АС
(
Выберите emp_name,emp_mail,emp_contact,функции row_number() над(раздел по emp_name,emp_mail,emp_contact заказа emp_name,emp_mail,emp_contact) Как нет
ОТ ЭМИ
)
Удалить из CTE, где нет > 1


Рейтинг:
0

Daniel Jones

Взгляните на эти ссылки
Удаление дубликатов из таблицы в SQL Server-простой разговор
Удаление повторяющихся строк в SQL Server

надеюсь, что эти ссылки помогут