我在mysql中有以下表格
2018-02-12 12:17:30.394 INFO 88028 --- [ xxx-0-C-1] o.s.k.l.KafkaMessageListenerContainer
: partitions revoked: [kbgh290-0]
2018-02-12 12:17:30.450 INFO 88028 --- [ xxx-0-C-1] o.s.k.l.KafkaMessageListenerContainer
: partitions assigned: [kbgh290-0, kbghNew-0]
我想要一个查询,它会显示按thread_id分组的所有邮件,如果它们包含任何未读邮件,我想要一个名为read_status的列显示未读
所以查询结果如下所示:
msg_id | thread_id | read_status
--------------------------------
1 | 1 | read
2 | 1 | read
3 | 2 | unread
4 | 2 | read
5 | 2 | read
6 | 3 | read
7 | 3 | unread
到目前为止,我有:
thread_id | read_status
-----------------------
1 | read
2 | unread
3 | unread
但这会填充" read_status"与第一条消息无关的结果,而不是任何消息未读...
我不知道怎么做,有人可以帮忙吗?
提前致谢
答案 0 :(得分:3)
您需要汇总,例如:
select thread_id,
(case when sum(user_read_status = 'U') > 0 then 'unread' else 'read' end) as thread_status
from messages
group by thread_id;
如果邮件状态确实是“已读”和“未读”(如示例数据中所示),您可以使用此快捷方式:
select thread_id, max(message_status) as thread_status
from messages
group by thread_id;
这只能起作用,因为你有两种状态,字母顺序有意义。