【问题标题】:Return all duplicate rows返回所有重复的行
【发布时间】:2012-03-23 09:49:08
【问题描述】:

我编写了这段代码来查找重复项,它工作正常:

SELECT *
FROM StyleTable 
GROUP BY Color
HAVING count(*) > 1 

问题是,它只返回一个重复的行。是否可以返回所有重复的行?我猜它可能与“GROUP BY”有关,但我不确定如何更改它。我不想删除这些值,只需返回它们。

【问题讨论】:

  • 我认为这条 SQL 不会运行,除非 Color 是 STyleTable 表中的唯一列。

标签: sql sqlite select group-by duplicates


【解决方案1】:
WITH cte AS ( SELECT FirstName, LastName,COUNT(*) occurrences FROM Customer GROUP BY FirstName, LastName HAVING COUNT(*) > 1)
SELECT * FROM Customer INNER JOIN cte ON 
        cte.FirstName = Customer.FirstName AND 
        cte.LastName = Customer.LastName
ORDER BY Customer.FirstName, Customer.LastName

【讨论】:

  • 如果您不介意简要说明您的答案及其相对于其他答案的用途,通常会有所帮助
【解决方案2】:

您必须再次加入表才能获得我认为的重复项。比如:

SELECT * 
FROM StyleTable 
WHERE Color IN (
  SELECT Color  
  FROM StyleTable   
  GROUP BY Color  
  HAVING count(*) > 1 
)     

【讨论】:

  • 谢谢,这行得通。我会在几分钟内接受。
【解决方案3】:
SELECT s.*
    FROM StyleTable s
        INNER JOIN (SELECT Color
                        FROM StyleTable
                        GROUP BY Color
                        HAVING COUNT(*) > 1) q
            ON s.Color = q.Color

【讨论】:

    猜你喜欢
    • 2017-03-30
    • 2013-09-22
    • 2018-05-07
    • 1970-01-01
    • 2011-04-29
    • 2018-12-05
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多