Doppelte Datensätze löschen per SQL

Streethawk68

Aktiver Benutzer
Beiträge
38
Hallo!
Nach einer stattgehabten Anfügeabfrage habe ich jetzt ca. 138 doppelte Datensätze. Wunschgröße der Tabelle: 1192, derzeit aber 1330. Die Datensätze sind, vom PRIMARY KEY namens "Nummer" abgesehen, völlig identisch. Welcher SQL-Befehl löscht jeweils einen der doppelten Datensätze?
Grüße, Streethawk68
 
Werbung:
vielleicht so...

Code:
edb=> create table streethawk68(id int generated always as identity primary key, val int);
CREATE TABLE
edb=*> copy streethawk68 (val) from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1
>> 2
>> 3
>> 3
>> 4
>> 5
>> 5
>> 6
>> 7
>> 7
>> 8
>> \.
COPY 11
edb=*> with del as (select val, min(id), max(id) from streethawk68 group by val) delete from streethawk68 where id in (select min from del where not min = max);
DELETE 3
edb=*> select * from streethawk68;
 id | val
----+-----
  1 |   1
  2 |   2
  4 |   3
  5 |   4
  7 |   5
  8 |   6
 10 |   7
 11 |   8
(8 rows)
 
Sorry, aber das ist mir zu kompliziert. Geht das nicht irgendwie so:
DELETE FROM tbl_fields
WHERE <New ID Column> IN (SELECT MAX(<New ID Column>)
FROM tbl_fields
WHERE fieldnotes IS NULL
GROUP BY fieldno,fieldserial,id,fielddate,fieldsid
HAVING COUNT(*) > 1)
Grüße
 
Werbung:
So hat es geklappt:
DELETE t1 FROM mensch t1 INNER JOIN mensch t2 WHERE t1.Nummer < t2.Nummer AND t1.VORNAME_BE = t2.VORNAME_BE AND t1.BEMERKUNG = t2.BEMERKUNG;
Grüße, Streethawk68
 
Zurück
Oben