Intereting Posts
SELECT только пустые строки возвращают результат с пробелом Задача LEFT OUTER JOIN (дает дополнительные строки) Запрос Mysql: сопоставление с использованием шаблона Как преобразовать (или, возможно, сворачивать) эти результаты MySQL в консолидированное представление? Как импортировать CSV в postgresql, который уже имеет ID? Можно ли использовать один запрос sql для итерации по иерархической таблице до NULL В SQL обрабатывается до или после SELECT? Ошибка (ORA-00923: ключевое слово FROM не найдено, где ожидалось) Эффективный способ обновления таблицы отношений SQL В MySQL, как скопировать содержимое одной таблицы в другую таблицу в одной базе данных? Как группировать по дате недели или дате, которые начинаются по воскресеньям в оракуле 10? Как хранить только время; не дата и время? мои тайм-ауты sql, если где не включить все столбцы первичного комбо-ключа? что не так? Как ускорить транзакцию вставки, повторяющуюся снова и снова Rails: как найти_поля, содержащего определенную строку

Как найти дубликаты в нескольких столбцах?

Поэтому я хочу сделать что-то вроде этого кода sql ниже:

select s.id, s.name,s.city from stuff s group by s.name having count(where city and name are identical) > 1 

Чтобы произвести следующее, (но игнорируйте, где только имя или только совпадение города, оно должно быть в обеих колонках):

 id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris 

Дублированный id для name пар и city :

 select s.id, t.* from [stuff] s join ( select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1 ) t on s.name = t.name and s.city = t.city 
  SELECT name, city, count(*) as qty FROM stuff GROUP BY name, city HAVING count(*)> 1 

Что-то подобное сделает трюк. Не знаю о производительности, поэтому сделайте несколько тестов.

 select id, name, city from [stuff] s where 1 < (select count(*) from [stuff] i where i.city = s.city and i.name = s.name) 

Вы должны сами присоединиться к материалам и имени и городу. Затем группируйте по счету.

 select s.id, s.name, s.city from stuff s join stuff p ON ( s.name = p.city OR s.city = p.name ) group by s.name having count(s.name) > 1 

Выясните дубликат записи для более чем одного столбца, наилучшим образом присоединитесь к таблице

 select * from [stuff] s join ( select name, city from [stuff] group by name, city having count(*) > 1 ) t on s.name = t.name and s.city = t.city 

Учитывая промежуточную таблицу с 70 столбцами и только 4, представляющую дубликаты, этот код вернет оскорбительные столбцы:

 SELECT COUNT(*) ,LTRIM(RTRIM(S.TransactionDate)) ,LTRIM(RTRIM(S.TransactionTime)) ,LTRIM(RTRIM(S.TransactionTicketNumber)) ,LTRIM(RTRIM(GrossCost)) FROM Staging.dbo.Stage S GROUP BY LTRIM(RTRIM(S.TransactionDate)) ,LTRIM(RTRIM(S.TransactionTime)) ,LTRIM(RTRIM(S.TransactionTicketNumber)) ,LTRIM(RTRIM(GrossCost)) HAVING COUNT(*) > 1 

,