我有一个数据库(我正在运行 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
字段中为每个程序集手动设置关键组件。我正在寻找一种方法,通过检查 attribute1
中所述项目的 stock
并编写相关的 来更新每个程序集的
值放入装配线。stock
库存
到目前为止,我最大的问题是找到一种方法,通过搜索 attribute1
中声明的项目并复制现有的 stock< 来让
值。
由于我使用 MySQL 的经验非常有限,我只找到了一种在检查简单条件(用 UPDATE
逐行更改attribute1
编写的内容)后使用 UPDATE
更改值的方法:
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);
关于MySQL 根据条件每行更新值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660363/