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.
ev-man hat geschrieben: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=*#
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ev-man hat geschrieben: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.
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ev-man hat geschrieben:Hier die genaue Fehlermeldung beim Kompilieren:
- [font="]Fehler(280,3): PLS-00103: Fand das Symbol "DELETE" als eines der folgenden erwartet wurde: ( select <a SQL statement> Das Symbol "DELETE" wurde ignoriert.
[/font]
Also muss mein Cursor mit dem eigentlichen select beginnen. Kann man besagte Zeilen auch hinterher irgenwie loswerden?
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ev-man hat geschrieben:Nein, es ist oracle. Dachte, die Befehle wären gleich.
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste