我有一个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收集数据,更新量会因用户输入的不同而有所不同应该提到答案 0 :(得分:1)
凯斯在这里帮不了你。试试这个。
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);
更新解决评论:
显然它必须是CASE
。
试试这个,请:
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);
使用CASE不依赖于它在SELECT中,它只是一个操作符 - 你可以在SELECT,ON或USING in FROM,WHERE,HAVING,......几乎任何地方使用它。
我不知道该语法错误,请更新您的代码。