2012-03-05 33 views
11

que he escrito este código para encontrar duplicados y funciona bien:devolver todas las filas duplicadas

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

El problema es que está regresando sólo una de las filas duplicadas. ¿Es posible devolver todas las filas duplicadas? Supongo que puede tener algo que ver con 'GROUP BY', pero no estoy seguro de cómo cambiarlo. No quiero borrar los valores, simplemente devuélvalos.

+0

Creo que este SQL no se ejecutaría, a menos que Color sea la única columna en la tabla STyleTable. – theglauber

Respuesta

15

Tienes que volver a la mesa para obtener los duplicados, creo. Algo como:

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

Gracias, esto funcionó. Aceptaré en unos minutos cuando pueda. – XSL

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