gpt4 book ai didi

MySQL 根据条件每行更新值行

转载 作者:行者123 更新时间:2023-11-29 09:25:30 26 4
gpt4 key购买 nike

我有一个数据库(我正在运行 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< 来让 UPDATE 逐行更改 值。由于我使用 MySQL 的经验非常有限,我只找到了一种在检查简单条件(用 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);

fiddle

关于MySQL 根据条件每行更新值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com