あなたの質問は少し紛らわしいです。あなたは値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