首页 > 解决方案 > 按相同的值对列进行分组并更新

问题描述

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

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

我正在尝试将 index = blue 的行更新为 index = red,但不允许列“number”和“index”相同。我尝试将列分组在一起,如果列号 = 数字和索引 = 索引则返回错误语句

我怎样才能做到这一点?

预期结果:

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

标签: mysqlsql

解决方案


您可以将最小值更新为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';

推荐阅读