如何在MySQL中找到重复项

TIM*_*MEX 2 python mysql

假设我有很多列.如果2列匹配且完全相同,则它们是重复的.

ID | title | link | size | author
Run Code Online (Sandbox Code Playgroud)

假设链接和大小对于2行或更多行是相似的,那么这些行是重复的.如何将这些重复项放入列表并进行处理?

Lan*_*ing 7

将返回所有具有重复的记录:

SELECT theTable.*
FROM theTable
INNER JOIN (
  SELECT link, size
  FROM theTable 
  GROUP BY link, size
  HAVING count(ID) > 1
) dups ON theTable.link = dups.link AND theTable.size = dups.size
Run Code Online (Sandbox Code Playgroud)

我喜欢子查询b/c我可以做一些事情,比如选择除了第一个或最后一个.(很容易变成删除查询).

示例:选择所有重复记录除了具有最大ID的记录之外:

SELECT theTable.*
FROM theTable
INNER JOIN (
  SELECT link, size, max(ID) as maxID
  FROM theTable 
  GROUP BY link, size
  HAVING count(ID) > 1
) dups ON theTable.link = dups.link 
          AND theTable.size = dups.size 
          AND theTable.ID <> dups.maxID
Run Code Online (Sandbox Code Playgroud)