按相同值对列进行分组并更新

zazmityj  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(230)

给定一个只有几列(数字和索引很重要)和几行的表。

|number|index|line|
| 1234 | blue| 0  |
| 1234 | blue| 1  |
| 567  | blue| 0  |

我试图将index=blue的行更新为index=red,但是“number”列和“index”列不允许相同。我尝试将列分组在一起,如果列编号=number,索引=index,则返回一个错误语句
我怎样才能做到这一点?
预期结果:

|number|index|line|
|1234  |blue |0   |
|1234  |blue |1   |
|567   |red  |0   |
vmdwslir

vmdwslir1#

可以将最小值更新为 red :

update t join
       (select min(number) as min_number
        from t
        where index = 'blue'
       ) tt
       on t.number = tt.min_number and t.index = 'blue'
    set index = 'red';

相关问题