2012-03-05 61 views
11

我寫這個代碼,以查找重複,它工作正常:返回所有的重複行

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

的問題是,它的返回只是重複的行之一。是否有可能返回所有重複的行?我猜這可能與'GROUP BY'有關,但我不知道如何改變它。我不想刪除這些值,只是返回它們。

+0

我覺得這SQL不會跑,除非顏色在STyleTable表中唯一的列。 – theglauber 2012-03-05 22:14:34

回答

15

你必須重新回到表格才能得到我認爲的副本。喜歡的東西:

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

謝謝,這工作。我可以在幾分鐘內接受。 – XSL 2012-03-05 22:20:14

5
SELECT s.* 
    FROM StyleTable s 
     INNER JOIN (SELECT Color 
         FROM StyleTable 
         GROUP BY Color 
         HAVING COUNT(*) > 1) q 
      ON s.Color = q.Color