SQL - 找到重复项

时间:2011-06-10 22:15:57

标签: mysql sql

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

理想情况下,我的结果集应为3行。每个目的地一行。

但在我的结果中有重复。

chi
usa
ind
usa

我想找到哪个目的地是重复的。 我有数百个目的地,我想删除重复的记录。 我不是在寻找明显的。我正在寻找重复的那些。

3 个答案:

答案 0 :(得分:7)

使用group by而不是使用distinct

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 :(得分:1)

这将为您提供重复数量,按照dupes desc的数量排序:

SELECT CountryAbbr,
       COUNT(*) AS DuplicateCount
FROM   YourTable
GROUP BY CountryAbbr
HAVING COUNT(*) > 1
Order By 2 DESC

答案 2 :(得分:0)

最后添加组...应该给你两列,on是国家,另一列是它在列表中的次数。

所以......

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

希望这有帮助