Vaše otázka je trochu matoucí. Říkáte, že byste chtěli nastavit hodnotu b
na minimální hodnotu z oddílu a
sloupec b
je v řádku s, zatímco řádky obsahující b = 1
by měl zůstat nedotčen.
Z toho, co vidím ve vaší otázce jako komentáře (předpokládám, že je to váš očekávaný výstup), chcete také získat minimální hodnotu, která následuje po 1
v rámci oddílu - takže v podstatě chcete minimální hodnotu b
která je větší než 1
.
Níže je uveden SQL dotaz, který to dělá
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
Výstup po aktualizaci
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3