Doppelte Einträge löschen

Ich habe ein select, dass mir Zeilen zurück gibt, die in genau einer Spalte übereinstimmen. Sollte es solche Zeilen geben, möchte ich, dass beide gelöscht werden. Wir kann ich das machen? Mit distinct on bleibt ja eine von beiden erhalten.

Danke.



test=# select * from doppelt;
 id | value
----+-------
  1 |     1
  2 |     1
  3 |     2
  4 |     3
  5 |     4
  6 |     5
  7 |     5
  8 |     6
  9 |     7
 10 |     8
(10 rows)

test=*# select value, count(1) from doppelt group by 1 having count(1) = 2 ;
 value | count
-------+-------
     1 |     2
     5 |     2
(2 rows)

test=*# select value from doppelt group by 1 having count(1) = 2 ;
 value
-------
     1
     5
(2 rows)

test=*# delete from doppelt where value in (select value from doppelt group by 1 having count(1) = 2);
DELETE 4
test=*# select * from doppelt;
 id | value
----+-------
  3 |     2
  4 |     3
  5 |     4
  8 |     6
  9 |     7
 10 |     8
(6 rows)

test=*#

Du siehst den Weg?

Andreas

Soweit klar. Ich hab nur noch 2 Probleme dabei. Ich selektiere aus 2 Tabellen und das select soll in einen Cursor geschrieben werden. Wenn ich das einfach so mache, kommt beim Kompilieren die Fehlermeldung fand delete als select erwartet.

http://www.google.de/search?hl=de&q=“fand+delete+als+select+erwartet”&meta=&cts=1269868661238&aq=f&aqi=&aql=&oq=&gs_rfai=
Keine Ergebnisse für “fand delete als select erwartet” gefunden.

Möglicherweise lautete die Fehlermeldung ja anders?


Andreas

Hier die genaue Fehlermeldung beim Kompilieren:


Also muss mein Cursor mit dem eigentlichen select beginnen. Kann man besagte Zeilen auch hinterher irgenwie loswerden?

Verwendest Du PostgreSQL? Mich überkommen Zweifel …


Andreas

Nein, es ist oracle. Dachte, die Befehle wären gleich.

Nun, es ist, zumindest für mich, aus den spezifischen Fehlermeldungen eines mir unbekannten Systems revers rauszubekommen, wie Dein SQL-Befehl aussah und was daran (wieder aus Sicht eines mir nicht bekannten Systems) wohl falsch sei. Sorry, Glaskugel ist (mal wieder) defekt…


Andreas

Nun, du bist hier in einem Forum für PostgreSQL. Wenn du Lizenzkosten sparen möchtest, können wir dir gern helfen :wink:

Ich habe den Thread erst mal in das passende Forum verschoben, dem für andere Datenbanken.


Ansonsten wäre es praktisch, wenn du langsam mal konkretes SQL und richtige Fehlermeldungen zeigen könntest. Mit herumraten ist weder dir noch uns geholfen.