mysql - 按相同的值对列进行分组并更新
问题描述
给定一个表,其中只有几列(数字和索引很重要)和几行。
|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 |
解决方案
您可以将最小值更新为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';
推荐阅读
- interop - 我可以将 Windows 中的绝对路径用于安装在 WSL ubuntu 上的应用程序吗?
- python - 点安装
错误 - 程序无法启动,因为 VERSION.dll 丢失” - html - 边距未在 CSS 中应用
- r - 如何在 Dataframe 中仅添加缺少的日期
- mysql - SQL:打破与子查询的联系
- node.js - 与黑名单撤销功能一起使用时,Express-jwt 未设置 req.user
- javascript - Vue JS 路由器显示在页面中间
- c# - 更改照片中的特定像素,其中像素为数字,照片由数字组成
- apache-spark - 为什么 Spark 工作人员的单个核心完成每个任务的速度比其他工作人员中的其余核心要快?
- java - Elasticsearch High Level Rest Client - 带有类型(子)字段的 Java 地图 - 日期、数字等