Ihre Frage ist etwas verwirrend. Sie sagen, dass Sie den Wert b
setzen möchten auf einen Minimalwert von Partition a
diese Spalte b
ist in Zeile mit, während die Zeilen b = 1
enthalten sollte unberührt bleiben.
Von dem, was ich in Ihrer Frage als Kommentare sehen kann (ich nehme an, es ist Ihre erwartete Ausgabe), möchten Sie auch den Mindestwert erhalten, der 1
folgt innerhalb einer Partition - Sie möchten also im Grunde den Mindestwert von b
das ist größer als 1
.
Unten ist eine SQL-Abfrage, die dies tut
UPDATE t1 alias
SET b = (
SELECT min(b)
FROM t1
WHERE alias.a = t1.a
AND t1.b > 1 -- this would get the minimum value higher than 1
GROUP BY a
)
WHERE alias.b > 1 -- update will not affect rows with b <= 1
Ausgabe nach Update
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3