View Full Version : SQL - Mehrfachdatensätze Löschen
programmer400
21-02-18, 08:42
Wir bekommen von einer externen Windows-Anwendung Datensätze zwecks Lagerverbuchung angeliefert.
Jetzt kommt es sporadisch vor, dass Datensätze in diese Schnittstellendatei mehrfach angeliefert werden.
Gibt es mittels SQL eine Möglichkeit alle eindeutigen Datensätze in eine neue Datei zu schreiben, d.h. dass dann ein Datensatz nur einmal vorkommt?
Weiters wäre es hilfreich, die dadurch gelöschten Sätze in eine eigene Datei, zweck Nachvollziehbarkeit auszugeben.
Besten Dank im Voraus für die Hilfe.
Select distinct * from mytable
Vorab, um die doppelten aus zu geben
select "alle Felder" (oder nur die, die den Unique Key bilden) from Datei group by "alle Felder" (oder nur die, die den Unique Key bilden) having count(*) > 1
programmer400
21-02-18, 11:09
Danke für die Hilfen, bin schon um einiges weitergekommen.
Aber wie kann ich bei group by "alle Felder" auswählen, ohne wirklich die Felder auswählen zu müssen?
... so wie man ins Wasser gehen kann ohne nass zu werden: gar nicht!
Probier's mal so:
SELECT DISTINCT * FROM Datei WHERE (Feld1, Feld2, ...) IN
(
SELECT Feld1, Feld2, ... FROM Datei
GROUP BY Feld1, Feld2, ...
HAVING COUNT(*)>1
)
Kommen wir noch mal auf die Ursprungsfrage:
"Gibt es mittels SQL eine Möglichkeit alle eindeutigen Datensätze in eine neue Datei zu schreiben, d.h. dass dann ein Datensatz nur einmal vorkommt?"
=>
Insert into NewTable
select distinct * from OldTable
=>
create table NewTable as (
select distinct * from OldTable)
with data
Mittels Group und Having erhält man doch nur die Sätze, die wirklich mehr als 1x vorkommen.
Was ist mit den Daten, die wirklich nur 1x da sind?
Der DISTINCT (Eindeutig!) fasst alle doppelten zusammen. Der Group/Having macht nur Sinn, wenn man mehrfache Schlüssel hat, diese jedoch unterschiedliche Daten.
Hallo Baldur
ja, DU hast die Frage gelöst,
ich war nur Hilfreich :rolleyes:
Weiters wäre es hilfreich, die dadurch gelöschten Sätze in eine eigene Datei, zweck Nachvollziehbarkeit auszugeben.
programmer400
23-02-18, 10:34
Besten Dank an alle für die Hilfestellung.