# [Oracle] Doppelte Einträge / Zeilen löschen



## Thomas Darimont (13. Januar 2005)

Hallo!

hier mal ein kleines Beispiel wie man ganz schnell doubletten aus einer Oracle Tabelle herausfiltern kann:

Tabelle: dbltest

```
SQL> create table dbltest(id int, name varchar(32));

Tabelle wurde angelegt.

insert into dbltest values(1,'AAA');
insert into dbltest values(1,'AAA');
insert into dbltest values(1,'AAA');
insert into dbltest values(1,'AAA');
insert into dbltest values(2,'BBB');
insert into dbltest values(2,'BBB');
insert into dbltest values(3,'CCC');

SQL> select * from dbltest;

        ID NAME
---------- --------------------------------
         1 AAA
         1 AAA
         1 AAA
         1 AAA
         2 BBB
         2 BBB
         3 CCC

7 Zeilen ausgewõhlt.
```

Nun das "magische" Statement:
(Wobei hier darauf zu achten ist, dass wir in der Group By Klausel die Spalte angeben die wir bei der Überprüfung auf Übereinstimmung zu Rate ziehen. In dem Fall definieren wir als "Doubletten" die Zeilen die den gleichen "Name"-Wert haben.)

```
SQL> DELETE FROM dbltest WHERE ROWID NOT IN ( SELECT MIN(ROWID) FROM dbltest GROUP BY (name));

4 Zeilen wurden gel÷scht.
```

Danach ergibt ein anschließendes Select:

```
SQL> select * from dbltest;

        ID NAME
---------- --------------------------------
         1 AAA
         2 BBB
         3 CCC
```

Gruß Tom


----------



## Akeshihiro (20. Dezember 2011)

Danke vielmals, das hat mir grad echt alles gerettet ^^


----------

