Можете ли вы помочь мне с инструкциями SQL, чтобы найти дубликаты в нескольких полях?
Например, в псевдокоде:
select count(field1,field2,field3)
from table
where the combination of field1, field2, field3 occurs multiple times
и из приведенного выше заявления, если есть несколько случаев, я хотел бы выбрать каждую запись, кроме первой .
sql
sql-server
tsql
sql-server-2008
Джо Скит
источник
источник
Ответы:
Чтобы получить список полей, для которых есть несколько записей, вы можете использовать ..
Проверьте эту ссылку для получения дополнительной информации о том, как удалить строки.
http://support.microsoft.com/kb/139444
Редактировать: Как упоминали другие пользователи, должен быть критерий для определения того, как вы определяете «первые строки», прежде чем использовать подход по ссылке выше. Исходя из этого, вам нужно будет использовать заказ по предложению и подзапрос, если это необходимо. Если вы можете опубликовать пример данных, это действительно поможет.
источник
Вы упоминаете «первый», поэтому я предполагаю, что у вас есть какой-то порядок в ваших данных. Предположим, что ваши данные упорядочены по какому-то полю
ID
.Этот SQL должен получить дубликаты, кроме первой. Он в основном выбирает все строки, для которых существует другая строка с (а) одинаковыми полями и (б) более низким идентификатором. Производительность не будет хорошей, но она может решить вашу проблему.
источник
Это забавное решение с SQL Server 2005, которое мне нравится. Я собираюсь предположить, что под «для каждой записи, кроме первой», вы подразумеваете, что есть еще один столбец «id», который мы можем использовать, чтобы определить, какая строка является «первой».
источник
Чтобы увидеть повторяющиеся значения:
источник
Если вы используете SQL Server 2005 или более позднюю версию (а теги для вашего вопроса указывают на SQL Server 2008), вы можете использовать функции ранжирования, чтобы возвращать дубликаты записей после первой, если использование объединений менее желательно или нецелесообразно по какой-либо причине. Следующий пример показывает это в действии, где он также работает с нулевыми значениями в исследованных столбцах.
Обратите внимание после запуска этого примера, что первая запись из каждой «группы» исключена и что записи с нулевыми значениями обрабатываются правильно.
Если у вас нет доступного столбца для упорядочения записей в группе, вы можете использовать столбцы с разделением по столбцам в качестве столбцов с упорядочением по.
источник
источник
Попробуйте этот запрос, чтобы иметь счетчик sepratley каждого оператора SELECT:
источник