Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 在true或false结果表达式中重用IF条件的结果_Mysql - Fatal编程技术网

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