# Alle doppelten Einträge anzeigen



## LightBear (15. April 2011)

Hi!

Ich würde gern in meiner MySQL-Datenbank alle doppelten Einträge auslesen. 

Mir ist klar, das ich dies mit Distinct oder einem einfachen Group By erledigen kann, allerdings bekomme ich dann den doppelten Datensatz nur 1x ausgegeben - auch wenn dieser 100x in der Datenbank vorhanden ist.

Wie bekomme ich es hin, dass ich bei dem Select eben 100x den doppelten Datensatz zurückbekomme?


----------



## Yaslaw (15. April 2011)

```
SELECT
	source.*
FROM
	mytable AS source,
	(
		SELECT		field_1, field_2	-- alle Group-Felder
		FROM		mytable
		GROUP BY	field_1, field_2	-- alle Group-Felder
		HAVING		COUNT(*) > 1	-- nur jene auswählen die mehr als ein Datensatz haben
	) AS filter
WHERE
	filter.field_1 = source.field_1	-- alle Group-Felder verknüpfen
	AND filter.field_2 = source.field_2
```


----------



## LightBear (15. April 2011)

danke danke danke!

in jedem anderen code beispiel was ich gefunden hatte, kam "IN (...)" drin vor und das war aus performance gründen einfach absolut untragbar ...

deine methode ist bei mir auch mit sehr vielen datensätzen noch ziemlich flott!


----------



## Yaslaw (15. April 2011)

Du kannst mit IN() über den WHERE-Part gehen. Du kannst aber auch ein INNER JOIN machen. Das was ich habe, entspricht einem INNER JOIN einfach mit den Argumenten im WHERE-Teil. ggf. ist ein INNER JOIN noch schneller, müsstest du testen


----------

