假设我有很多列.如果2列匹配且完全相同,则它们是重复的.
ID | title | link | size | author
假设链接和大小对于2行或更多行是相似的,那么这些行是重复的.如何将这些重复项放入列表并进行处理?
将返回所有具有重复的记录:
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
我喜欢子查询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