Doppelte Einträge umbenennen

SQLITC

Benutzer
Beiträge
8
Hallo,

es gibt eine Datenbank, in der in einer Tabelle X doppelte Einträge vorhanden sind. Problem ist, ich muss diese doppelten Einträge auch auch Filtern. Das bedeutet konkret, dass ich nach allen doppelten Einträgen suche, die in dieser Spalte vorkommen und in dem Feld das Wort Auftrag enthalten. Die Suche danach stellt kein Problem da. Das folgende Statement bewirkt jedoch, dass er zwar die doppelten umbenennt, aber auch das Duplikat. Somit hab ich die Dopplung ja nicht raus. Mein Ansatz:

Update DB.Präfix.Tabelle
SET name = name + ' - 2'
Where
name = (
Select name
from DB.Präfix.Tabelle
Group by name
having name LIKE 'Auftrag%' and (Count(name) > 1)
)

Über Hilfe würde ich mich freuen.

Vielen Dank.
 
Werbung:
Code:
test=*# select * from doppelt;   
 id | name   
----+------   
  1 | foo   
  2 | bla   
  3 | foo   
  4 | bla   
  5 | blub   
  6 | test   
  7 | demo   
  8 | demo   
(8 rows)   

test=*# select id, name, row_number() over (partition by name) from doppelt;
 id | name | row_number   
----+------+------------   
  4 | bla  |  1   
  2 | bla  |  2   
  5 | blub |  1
  8 | demo |  1
  7 | demo |  2
  1 | foo  |  1
  3 | foo  |  2
  6 | test |  1
(8 rows)

test=*# select id from (select id, name, row_number() over (partition by name) from doppelt) bla;
 id
----
  1
  2
  3
  4
  5
  6
  7
  8
(8 rows)

test=*# select id from (select id, name, row_number() over (partition by name) from doppelt) bla where row_number = 2;
 id
----
  2
  7
  3
(3 rows)

test=*# update doppelt set name = name || '-2' where id in (select id from (select id, name, row_number() over (partition by name) from doppelt) bla where row_number = 2);
UPDATE 3
test=*# select * from doppelt;
 id |  name
----+--------
  1 | foo
  4 | bla
  5 | blub
  6 | test
  8 | demo
  7 | demo-2
  3 | foo-2
  2 | bla-2
(8 rows)
 
Werbung:
Zurück
Oben