2011-05-04 76 views
3

我只是想从表中返回重复的记录。在我的情况下,如果多个记录在col1,col2,col3和col4中具有相同的值,则记录会重复。返回重复记录

回答

5
SELECT col1, col2, col3, col4 
    , COUNT(*) AS cnt 
FROM yourTable 
GROUP BY col1, col2, col3, col4 
HAVING COUNT(*) > 1 

如果有要显示的附加列,您可以在上述JOIN表:

SELECT t.* 
    , dup.cnt 
FROM yourTable t 
    JOIN 
     (SELECT col1, col2, col3, col4 
      , COUNT(*) AS cnt 
     FROM yourTable 
     GROUP BY col1, col2, col3, col4 
     HAVING COUNT(*) > 1 
    ) AS dup 
     ON t.col1 = dup.col1 
     AND t.col2 = dup.col2 
     AND t.col3 = dup.col3 
     AND t.col4 = dup.col4 
1
SELECT m.* 
FROM (
     SELECT col1, col2, col3, col4, COUNT(*) 
     FROM mytable 
     GROUP BY 
       col1, col2, col3, col4 
     HAVING COUNT(*) > 1 
     ) md 
JOIN mytable m 
ON  m.col1 = md.col1 
     AND m.col2 = md.col2 
     AND m.col3 = md.col3 
     AND m.col4 = md.col4 
+1

这会不会只是返回所有行针对'COL1, col2,col3,col4'都是'NOT NULL'? – 2011-05-04 15:17:19

+0

@Martin:当然。 – Quassnoi 2011-05-04 15:27:20