Mysql 在true或false结果表达式中重用IF条件的结果
我有以下嵌套查询:Mysql 在true或false结果表达式中重用IF条件的结果,mysql,Mysql,我有以下嵌套查询: 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` 我想做的是,如果没有设置mess
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),它应该返回'unread'。但是,如果设置了,则应返回其值
当前,它返回一个错误:字段列表中的未知列“messages\u status.status”
您知道如何修复此问题吗?如果在其他地方出现
的情况,您不能参考的结果。您可以重复该查询:
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