SQL | Удаление дубликатов без отличий
Опубликовано: 30 Ноября, 2021
DISTINCT полезен в определенных обстоятельствах, но у него есть недостаток, заключающийся в том, что он может увеличить нагрузку на механизм запросов для выполнения сортировки (поскольку ему необходимо сравнить набор результатов с самим собой, чтобы удалить дубликаты).
Ниже приведены альтернативные решения:
1. Удалите дубликаты, используя номер строки.
С CTE (Col1, Col2, Col3, DuplicateCount) В ВИДЕ ( ВЫБЕРИТЕ Col1, Col2, Col3, ROW_NUMBER () OVER (РАЗДЕЛЕНИЕ ПО столбцу 1, столбцу 2, Col3 ORDER BY Col1) AS DuplicateCount ИЗ MyTable ) SELECT * from CTE, где DuplicateCount = 1
2.Удаление дубликатов с помощью самостоятельного соединения
YourTable
emp_name emp_address sex matial_status уууу эи мс iiii iii fs уууу эи мс
ВЫБЕРИТЕ emp_name, emp_address, sex, marital_status из YourTable a ГДЕ НЕ СУЩЕСТВУЕТ (выберите 1 из YourTable b где b.emp_name = a.emp_name и b.emp_address = a.emp_address и b.sex = a.sex и b.create_date> = a.create_date)
3. Удалите дубликаты с помощью группы «По».
Идея состоит в том, чтобы сгруппировать по всем столбцам, которые будут выбраны при выводе. Например, если мы хотим напечатать уникальные значения «FirstName, LastName и MobileNo», мы можем просто сгруппировать их по всем трем.
ВЫБЕРИТЕ FirstName, LastName, MobileNo ОТ ЗАКАЗЧИКА ГРУППИРОВАТЬ ПО имени, фамилии, мобильному номеру;