PDA

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.

Fuerchau
21-02-18, 08:48
Select distinct * from mytable

Robi
21-02-18, 09:10
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?

BenderD
21-02-18, 11:13
... so wie man ins Wasser gehen kann ohne nass zu werden: gar nicht!

Pikachu
21-02-18, 11:34
Probier's mal so:

SELECT DISTINCT * FROM Datei WHERE (Feld1, Feld2, ...) IN
(
SELECT Feld1, Feld2, ... FROM Datei
GROUP BY Feld1, Feld2, ...
HAVING COUNT(*)>1
)

Fuerchau
21-02-18, 12:05
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.

Robi
21-02-18, 12:19
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.