SQL - найти дубликаты - PullRequest
       4

SQL - найти дубликаты

0 голосов
/ 11 июня 2011
select * from table1 where destination in  ('chi','usa','ind')

В идеале мой набор результатов должен состоять из 3 строк. одна строка для каждого пункта назначения.

Но в моем результате есть дубликаты.

chi
usa
ind
usa

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

Ответы [ 3 ]

7 голосов
/ 11 июня 2011

Использовать группу по и иметь вместо

select destination from table1 
where destination in  ('chi','usa','ind')
group by destination 
having count(*)>1

Если вы хотите удалить их и сохранить один, это становится немного грязным. Это, вероятно, самый короткий путь, но это немного взломать.

delete from destination where id not in (
    select max(id) from table1
      where destination in  ('chi','usa','ind')
      group by destination 
    ) 
1 голос
/ 11 июня 2011

Это даст вам количество дубликатов, упорядоченных по количеству дубликатов desc:

SELECT CountryAbbr,
       COUNT(*) AS DuplicateCount
FROM   YourTable
GROUP BY CountryAbbr
HAVING COUNT(*) > 1
Order By 2 DESC
0 голосов
/ 11 июня 2011

Добавить группу в конце ... должен дать вам два столбца, это страна, другой - сколько раз это было в списке.

Итак ..

select * from table1 where destination in  ('chi','usa','ind') group by destination

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...