Въпросът ви е малко объркващ. Казвате, че искате да зададете стойност b
до минимална стойност от дял a
тази колона b
е в ред с, докато редовете, съдържащи b = 1
трябва да остане недокоснат.
От това, което виждам във вашия въпрос като коментари (предполагам, че това е вашият очакван резултат), вие също искате да получите минималната стойност, която следва 1
в рамките на дял - така че основно искате минималната стойност на b
който е по-голям от 1
.
По-долу е SQL заявка, която прави това
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
Резултат след актуализация
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3