gpt4 book ai didi

mysql - SQL - 在 UPDATE 语句中提供 AS 关键字

转载 作者:行者123 更新时间:2023-11-29 04:25:25 25 4
gpt4 key购买 nike

我有以下 UPDATE 语句:

update MESSAGES set status=
(select (CASE
WHEN from_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'S'
WHEN status='R'
THEN 'D'
END)
WHEN to_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'R'
WHEN status='S'
THEN 'D'
END)
END)
as status_value)
where primary_key='236499681204'
and status_value not null ;

此查询的问题是,在最后一行,status_value 无法识别。如果我删除最后一个比较,and status_value not null,它将起作用。我不希望上面的版本可以工作,但是有人能告诉我一个可以达到同样效果的替代方案吗?

有没有一种方法可以在 UPDATE 查询中使用 AS 关键字来定义变量 status_value

编辑

实际的要求不仅仅是我检查 status_value 是否为 null,而且我执行任何更新,如果它是

最佳答案

尝试添加 ELSE STATUS 并删除 and status_value not null:

  update MESSAGES set status=
(select (CASE
WHEN from_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'S'
WHEN status='R'
THEN 'D'
END)
WHEN to_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'R'
WHEN status='S'
THEN 'D'
END)
ELSE STATUS
END)
as status_value)
where primary_key='236499681204';

你也可以尝试使用view

create view MyView as
select (CASE
WHEN from_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'S'
WHEN status='R'
THEN 'D'
END)
WHEN to_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'R'
WHEN status='S'
THEN 'D'
END)
END)
as status_value;

update MESSAGES set status= mv.status_value
from MyView mv
where primary_key='236499681204'
and mv.status_value is null

或者你可以使用case in condition

 update MESSAGES set status=
(select (CASE
WHEN from_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'S'
WHEN status='R'
THEN 'D'
END)
WHEN to_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'R'
WHEN status='S'
THEN 'D'
END)
END)
as status_value)
where primary_key='236499681204'
and CASE
WHEN from_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'S'
WHEN status='R'
THEN 'D'
END)
WHEN to_id='111111111'
THEN (CASE
WHEN status='A'
THEN 'R'
WHEN status='S'
THEN 'D'
END)
END is not null;

关于mysql - SQL - 在 UPDATE 语句中提供 AS 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12716743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com