
Zitat von
ev-man
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.
Code:
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
Lesezeichen