gpt4 book ai didi

mysql - 在 true 或 false 结果表达式中重用 IF 条件的结果

转载 作者:行者123 更新时间:2023-11-29 00:13:02 24 4
gpt4 key购买 nike

我有以下嵌套查询:

SELECT `messages`.*, 
IF((select `status` from messages_status
where messages_status.message_id = messages.id and user_id = 149) IS NULL,
'unread', messages_status.status) as `status`
FROM `messages`

我想做的是,如果没有设置 messages_status.status(即如果它为 NULL),它应该返回“未读”。但是,如果已设置,则应返回其值。

目前,它返回一个错误:Unknown column 'messages_status.status' in 'field list'

你知道如何解决这个问题吗?

最佳答案

您不能在其他地方引用if 条件的结果。您可以重复查询:

IF((select `status` from messages_status 
where messages_status.message_id = messages.id and user_id = 149) IS NULL,
'unread',
(select `status` from messages_status
where messages_status.message_id = messages.id and user_id = 149))
as status

但是使用 join 可能更清楚:

select  m.*
, coalesce(ms.status, 'unknown')
from messages m
left join
messages_status ms
on ms.message_id = m.id
and ms.user_id = 149

coalesce 函数产生第一个非 null 的参数。

关于mysql - 在 true 或 false 结果表达式中重用 IF 条件的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104462/

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