Uw vraag is een beetje verwarrend. U zegt dat u de waarde b
. wilt instellen naar een minimumwaarde van partitie a
die kolom b
staat in rij met, terwijl de rijen met b = 1
moet onaangeroerd blijven.
Van wat ik in je vraag kan zien als opmerkingen (ik neem aan dat dit je verwachte output is), wil je ook de minimumwaarde krijgen die volgt op 1
binnen een partitie - dus je wilt eigenlijk de minimumwaarde van b
dat is groter dan 1
.
Hieronder staat een SQL-query die dit doet
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
Uitvoer na 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