Dit spørgsmål er lidt forvirrende. Du siger, at du gerne vil indstille værdien b
til en minimumsværdi fra partitionen a
den kolonne b
er i række med, mens rækkerne indeholder b = 1
bør forblive urørt.
Ud fra hvad jeg kan se i dit spørgsmål som kommentarer (jeg går ud fra, at det er dit forventede output) ønsker du også at få den minimumsværdi, der følger efter 1
inden for en partition - så du vil grundlæggende have minimumsværdien b
der er større end 1
.
Nedenfor er en SQL-forespørgsel, der gør dette
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
Output efter opdatering
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3