在我的消息表中,我有以下行,例如
|----|---------|--------------|------|
| id | user_id | message |status|
|====|=========|==============|======|
| 1 | 2 | msgs 11 | r |
|----|---------|--------------|------|
| 2 | 3 | msgs 12 | r |
|----|---------|--------------|------|
| 3 | 2 | msgs 13 | r |
|----|---------|--------------|------|
| 4 | 3 | msgs 14 | u |
|----|---------|--------------|------|
现在,我需要知道每个user_id
u
。例如,如下所示的查询
select user_id, status, count(*) as totalMsg from messages group by user_id
会带我跟随行
| user_id | status| totalMsg |
|=========|=======|==========|
| 2 | r | 2 |
|---------|-------|----------|
| 3 | r | 2 |
^
|------> I need this value to be 'u' because user 3 has a message u
我当前的查询并不真正保证会在状态列中查找u
。
这可能吗?如果是这样的话?
答案 0 :(得分:1)
MAX()
将对此起作用,因为r
是基于字典顺序的最小值。
SELECT user_ID,
MAX(status) status,
COUNT(*) totalMsg
FROM messages
GROUP BY user_ID