Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL根据条件每行更新值行_Mysql_Conditional Statements - Fatal编程技术网

MySQL根据条件每行更新值行

MySQL根据条件每行更新值行,mysql,conditional-statements,Mysql,Conditional Statements,我有一个数据库(我运行的是MySQL 5.7),其中有两个表,其中包含有关机械部件及其库存的数据。要了解其可用性,一个关键组件的可用性至关重要。关键组件的库存在第二个表(attribute1)中 项目的库存将自动更新。目前,在attribute1字段中为每个部件手动设置关键部件。我正在寻找一种方法,通过检查attribute1中所述项目的stock,并将相关的stock值写入程序集的行,来更新每个程序集的stock 到目前为止,我最大的问题是找到一种方法,通过搜索inattribute1声明项并

我有一个数据库(我运行的是MySQL 5.7),其中有两个表,其中包含有关机械部件及其库存的数据。要了解其可用性,一个关键组件的可用性至关重要。关键组件的库存在第二个表(attribute1)中

项目的库存将自动更新。目前,在
attribute1
字段中为每个部件手动设置关键部件。我正在寻找一种方法,通过检查
attribute1
中所述项目的
stock
,并将相关的
stock
值写入程序集的行,来更新每个程序集的
stock

到目前为止,我最大的问题是找到一种方法,通过搜索in
attribute1
声明项并复制现有的
stock
值,让
UPDATE
逐行更改。 由于我使用MySQL的经验非常有限,我只找到了一种方法,在检查了一个简单的条件(在
attribute1
中编写的内容)后,使用
UPDATE
来更改值:

我试图构建的查询是可行的还是遗漏了什么? 到目前为止,我头脑中的代码会在整个数据库中一遍又一遍地搜索每一行。有没有一种更快更优雅的方式来实现我的目标? 非常感谢您的帮助

寻找

更新程序集\u详细信息广告
在ad.name=aa.name上连接程序集\u属性aa
在aa.attribute1=ad2.name上连接程序集\u详细信息ad2
设置ad.stock=合并(ad.stock,ad2.stock);

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      
UPDATE assemblies_details
SET attribute1 = CASE
  WHEN LENGTH(assemblies_details.attribute1) > 0 THEN ???
  ELSE NULL
END