Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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-case语句更新所有值,而不仅仅是匹配的ID_Mysql - Fatal编程技术网

Mysql-case语句更新所有值,而不仅仅是匹配的ID

Mysql-case语句更新所有值,而不仅仅是匹配的ID,mysql,Mysql,我有一个case语句同时更新多个列和行,但出于某种原因,它会更新所有的行和列,即使没有输入值 UPDATE price SET item = CASE id WHEN 18 THEN 'cvbcvbcvb' END, description = CASE id WHEN 17 THEN 'cvbcv' END, price = CASE id WHEN 19 THEN '222' END WHERE id IN (17, 18, 19); 我注意到,如果

我有一个case语句同时更新多个列和行,但出于某种原因,它会更新所有的行和列,即使没有输入值

UPDATE price SET item = CASE id 
    WHEN 18 THEN 'cvbcvbcvb' 
END, 
description = CASE id 
    WHEN 17 THEN 'cvbcv' 
END, 
price = CASE id 
    WHEN 19 THEN '222' 
END
WHERE id IN (17, 18, 19);
我注意到,如果一个列没有更新,那么该列的no值就会改变,例如,如果省略了列描述,那么描述中的任何值都不会丢失

有什么想法吗


编辑我正在使用PHP收集数据,更新的数量将根据用户输入的不同而有所不同。抱歉,我应该提到,

案例在这里对您没有帮助。试试这个

UPDATE price SET
  item = if(id = 18, 'cvbcvbcvb', item), 
  description = if(id = 17, 'cvbcv', description), 
  price = if(id = 19, '222', price)
WHERE id IN (17, 18, 19);
更新处理评论: 显然它必须是
案例
。 请试试这个:

UPDATE price SET
  item = CASE id WHEN 18 THEN 'cvbcvbcvb' ELSE item END,
  description = CASE id WHEN 17 THEN 'cvbcv' ELSE description END,
  price = CASE id WHEN 19 THEN '222' ELSE price END
WHERE id IN (17, 18, 19);
用例并不依赖于它是否在SELECT中,它只是一个操作符-您可以在SELECT、on中使用它,或者在FROM中使用它,WHERE,have。。。几乎在任何地方


我不知道该语法错误,请更新您的代码。

您能提供一个数据示例、您得到的结果和您想要的结果吗?它随页面和用户输入的内容而变化。这里有一个表,有4列id、item、description和price。我只想更新用户从表单输入的值。我使用一个数组和一个循环来构建上面的sql语句。这没关系,但是如果我有多个更新,比如说description有4个值需要更新,item有2个值,price有3个值,这会不会变得复杂?那么你只需要将字段本身放在这种情况下的
ELSE
中。我更喜欢if作为例子,因为它比较短,但您可以使用CASE。如果没有设置其他值,您只需为原始值添加ELSE。ELSE一词是什么?结束前是什么?是: