【发布时间】:2014-06-10 07:55:09
【问题描述】:
我有以下表格:
消息:
id
thread_id
user_id
comment
timestamp
和messages_status:
id
message_id
user_id
status
messages 表中的 user_id 标记创建评论的用户的 ID,而 messages_status 表中的 user_id 标记设置状态(即已读/未读)的收件人用户的 ID。
我使用以下查询从线程中检索消息:
SELECT `messages`.*,
coalesce(messages_status.status, "unread") AS `status`
FROM `messages`
LEFT JOIN `messages_status` ON messages_status.message_id = messages.id
and messages_status.user_id = 143
WHERE (thread_id = '40')
这样,当messages_status表中没有某个message_id和user_id的行时,会返回“未读”。
但是,如果查询中 messages_status.user_id 的值(例如 143)与 messages.user_id 相同(即同一用户创建了评论),则 messages_status 表中没有行,但查询应该返回“read”(如果我是创建评论的用户,显然我也读过它)。
有没有办法创建这样的查询?
【问题讨论】:
标签: mysql