Din fråga är lite förvirrande. Du säger att du vill ställa in värdet b
till ett minimivärde från partitionen a
den kolumnen b
är i rad med, medan raderna innehåller b = 1
bör förbli orörd.
Av vad jag kan se i din fråga som kommentarer (jag antar att det är din förväntade produktion) vill du också få det lägsta värdet som följer 1
inom en partition - så du vill i princip ha minimivärdet för b
som är större än 1
.
Nedan finns en SQL-fråga som gör detta
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
Utdata efter uppdatering
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3