mysql - MySQL 根据条件每行更新值行
问题描述
我有一个数据库(我正在运行 MySQL 5.7),其中包含两个表,其中包含有关机械组件及其库存的数据。要了解它们的可用性,一个关键组件的可用性至关重要。关键组件的库存在第二个表(属性 1)中。
Table: assemblies_details
id name stock
1 assembly1 ?
2 assembly2 ?
3 item1 1
4 item2 2
Table: assemblies_attributes
id name attribute1
1 assembly1 item1
2 assembly2 item2
3 item1
4 item2
项目的库存会自动更新。目前,为现场的每个装配手动设置关键组件attribute1
。我正在寻找一种通过检查中所述的项目并将相关值写入程序集的行来更新stock
每个程序集的方法。stock
attribute1
stock
到目前为止,我最大的问题是找到一种方法,通过搜索声明的项目并复制现有值UPDATE
来逐行更改。由于我对 MySQL 的经验非常有限,我只找到了一种在检查简单条件(写在 中)后用来更改值的方法:attribute1
stock
UPDATE
attribute1
UPDATE assemblies_details
SET attribute1 = CASE
WHEN LENGTH(assemblies_details.attribute1) > 0 THEN ???
ELSE NULL
END
我正在尝试构建的查询是可行的还是我遗漏了什么?到目前为止,我脑海中的代码将再次搜索整个数据库的每一行。有没有更快、更优雅的方式来实现我想要做的事情?非常感谢任何帮助!
解决方案
寻找
UPDATE assemblies_details ad
JOIN assemblies_attributes aa ON ad.name = aa.name
JOIN assemblies_details ad2 ON aa.attribute1 = ad2.name
SET ad.stock = COALESCE(ad.stock, ad2.stock);
推荐阅读
- python - openCV 错误模块“cv2.face”没有属性“createEigenFaceRecognizer”
- android - 通过 VNC 连接到 Docker 容器中的 Android 模拟器(API 28 错误)
- excel - VBA 代码不会在最后一行粘贴数据
- ios - 核心数据异常错误 - 无效的获取请求:没有 GROUP BY 的 HAVING 和(null)的 userInfo
- python - self.__dict__.update(fields) 做什么?
- jquery - 清除输入元素时启用/禁用按钮
- reactjs - React.createElement:类型无效——在使用酶进行单元测试时预期会出现字符串警告
- swift - 更改视图大小并移动周围的视图
- javascript - 使用material-ui CSS的正确方法是什么?
- scala - 如何计算 SortedMap / TreeMap 的运行总计