Каков наиболее эффективный способ обнаружения дубликатов в таблице строк из 10 столбцов/50К? Я использую MSSQL 8.0Как обнаружить повторяющиеся строки в таблице SQL Server?
ответ
Чтобы показать пример того, что другие описывали:
SELECT
Col1, -- All of the columns you want to dedupe on
Col2, -- which is not neccesarily all of the columns
Col3, -- in the table
Col4,
Col5,
Col6,
Col7,
Col8,
Col9,
Col10
FROM
MyTable
GROUP BY
Col1,
Col2,
Col3,
Col4,
Col5,
Col6,
Col7,
Col8,
Col9,
Col10
HAVING
COUNT(*) > 1
Вы можете использовать «группу,» на все столбцы, а затем COUNT (*)> 1
это хорошо работает, просто не забудьте исключить синтетический ПК, если у вас есть один – 2008-11-20 20:37:19
Чтобы обнаружить, только группу, как сказал Гуге.
select fieldA, fieldB, count(*) from table
group by fieldA, fieldB
having count(*) > 1
Если вы хотите удалить Повторные ... псевдо ....
select distinct into a temp table
truncate original table
select temp table back into original table
С срезанным вы можете столкнуться с проблемами, если у вас есть FK ограничения, так быть умным об удалении ограничений и убедившись, вы не занимаетесь сиротой записей.
Попробуйте
Select * From Table
Group By [List all fields in the Table here]
Having Count(*) > 1
В дополнение к предложениям предоставленных, я бы затем к усилиям предотвращающих дублей в будущее, а не пытаться найти их позже.
Это делается с использованием уникальных индексов столбцов (или групп столбцов), которые должны быть уникальными. Помните, что данные в базе данных могут быть изменены из других мест, кроме определенного приложения, на котором вы работаете, поэтому лучше всего определить, что есть и не разрешено в таблице на уровне БД.
Пригвожденный чувак .. Спасибо тонне .. – Bajji 2008-11-24 12:17:08