# Qie bekomm ich das hin --> doppelte Spaltenwerte



## EOB (9. Aug 2007)

hallo, wie kann ich aus einer tabelle alle doppelten werte einer spalte abfragen und anzeihen, bzw. herausfinden, ob es doppelte werte gibt. es gibt also in meiner tabelle sagen wir mal 4 spalten und ich möchte wissen, in welchen zeilen für eine bestimmte spalte der wert schon existiert. beispiel


zeile1: wert1 wert2 wert3 wert4
zeile2: wert5 wert2 wert7 wert8

und eben so weiter. die möchte ich dann anzeigen. ne idee?

danke


----------



## The_S (9. Aug 2007)

Spontan und ungetestet:


```
select id, spalte1, spalte2, spalte3, spalte4
form tabelle a
inner join tabelle z on a.id<>z.id and (a.spalte1=z.spalte1 or a.spalte2=z.spalte2 or a.spalte3=z.spalte3 a.spalte4=z.spalte4)
```

gibt vermutlich aber noch bessere Methoden.


----------



## yajp (9. Aug 2007)

wenns nur um eine bestimmte spalte (field) geht:


```
SELECT * FROM blubb WHERE field in(
SELECT field FROM blubb GROUP BY field HAVING COUNT(*) > 1) ORDER BY irgendwat
```

hoffentlich hat sich da kein denkfehler eingeschlichen


----------



## abollm (9. Aug 2007)

Also, wenn die DB-Engine das unterstützt, funktioniert folgende Abfrage sicher, um für eine bestimmte Spalte in einer Tabelle sowohl den Wert der betreffenden Spalte als auch die Anzahl des Auftretens, aufsteigend nach der Anzahl des Auftretens sortiert, auszugeben. Das obige Statement von yajp liefert dagegen nur eine Liste der selektierten Spalten.



```
select spalte1, count(spalte1) from tabelle group by spalte1 having count(*) > 1 order by 2;
```

Hth


----------

