Mysql 使用case语句更新多个变量
我的_表中有两个变量:updated和status。每一行都有一个唯一的id。对于给定的id='abc123',如果'status'的值为'AAA',我想将status更改为'BBB','updated'更改为NOW(),否则保持不变 我有一个错误的代码: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
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分钟内接受这个。谢谢你的其他部分。我忽略了这一点,我意识到了这一点。但是,我想要一个用例。无论如何,谢谢你。