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 使用case语句更新多个变量_Mysql_Sql - Fatal编程技术网

Mysql 使用case语句更新多个变量

Mysql 使用case语句更新多个变量,mysql,sql,Mysql,Sql,我的_表中有两个变量:updated和status。每一行都有一个唯一的id。对于给定的id='abc123',如果'status'的值为'AAA',我想将status更改为'BBB','updated'更改为NOW(),否则保持不变 我有一个错误的代码: UPDATE my_table set status=(CASE when status='AAA' THEN 'BBB'), SET updated=(CASE when status='AAA' THEN NOW()) where id

我的_表中有两个变量:updated和status。每一行都有一个唯一的id。对于给定的id='abc123',如果'status'的值为'AAA',我想将status更改为'BBB','updated'更改为NOW(),否则保持不变

我有一个错误的代码:

UPDATE my_table set status=(CASE when status='AAA' THEN 'BBB'), 
SET updated=(CASE when status='AAA' THEN NOW()) where id='abc123';

如何实现我想做的事情?

您的语法只是有点不正确,在
UPDATE
语句中为
CASE
表达式指定一列并没有错

UPDATE my_table
SET
    status = CASE WHEN status = 'AAA' THEN 'BBB' ELSE status END,
    updated = CASE WHEN status = 'AAA' THEN NOW() ELSE updated END
WHERE id = 'abc123';
我将
ELSE
逻辑添加到您的
CASE
表达式中,该表达式默认为在条件失败时不更改值。您可以删除它们,但非匹配项将收到
NULL
值,可能不是您想要的值。

这也会起作用

UPDATE MY_TABLE
    SET STATUS = 'BBB',UPDATED =NOW()
    WHERE ID = 'ABC123' AND STATUS = 'AAA'

谢谢。

嘿。谢谢这很有效。我会在8分钟内接受这个。谢谢你的其他部分。我忽略了这一点,我意识到了这一点。但是,我想要一个用例。无论如何,谢谢你。