[Oracle] komplizierte Abfrage

xnicnacx

Mitglied
Hallo Forum
folgende Situation:
Eine Tabelle(vereinfacht) hat die Felder ID(Number), CODE(VARCHAR2) und MASTER(VARCHAR2, aber in Wirklichkeit nur true/false).
folgendes Problem:
Es soll in allen Zeilen, die für die Kombination ID / CODE unique sind, der Wert MASTER auf true gesetzt werden. Performance ist zweitrangig, da dies nur ein Migrationsskript ist welches genau 1mal ausgeführt wird.
Der Holzhammeransatz wäre eben alle Zeilen zu holen, entsprechend zu sortieren und jeweils Zeile x mit Zeile x-1 zu vergleichen um die Einmaligkeit zu bestimmen, ich bin mir jedoch sicher dass es da etwas eleganteres gibt was nur jenseits meiner SQL-Fähigkeiten liegt.
Vielen Dank schonmal für eure Zeit/Mühe
NicNac
 
SQL:
UPDATE tab SET master='TRUE'
WHERE (id, code) IN
(
 SELECT id, code FROM (
  SELECT id, code, count(1) FROM tab
  GROUP BY id, code 
  HAVING COUNT(1) = 1
 )
)

Das innere SELECT liefert sämtliche Kombinationen von ID und CODE, die genau einmal in der Tabelle vorkommen. Der Rest dürfte selbsterklärend sein.
 

Neue Beiträge

Zurück