我有一个具有以下结构的 mysql 表:
id | fuid | tuid | msg | time | new
-- -- -- -- -- -- -- - -- -- -- -- -- - -- --
1 | 58 | 6 | test msg |2014-07-29 12:06:45 | 1
2 | 18 | 6 | test msg |2014-07-29 11:38:00 | 1
3 | 58 | 6 | test msg |2014-07-29 11:38:00 | 1
4 | 58 | 6 | test msg |2014-07-28 17:08:54 | 1
5 | 58 | 6 | test msg |2014-07-28 17:08:48 | 0
6 | 39 | 6 | test msg |2014-07-28 16:47:54| 0
7 | 21 | 6 | test msg |2014-07-28 16:37:40| 0
8 | 83 | 6 | test msg |2014-07-28 16:33:35| 0
9 | 83 | 6 | test msg |2014-07-28 16:32:51| 1
10 | 83 | 6 | test msg |2014-07-28 16:32:45| 1
其中 fuid = 从用户 id(允许重复),tuid = 到用户 id(允许重复),new = 状态(是否读取)。
我正在尝试使用以下查询检索按 fuid 分组的最新消息(new = 1):
SELECT ch1.*
FROM chat_history ch1 INNER JOIN
(
SELECT fuid, MAX(`time`) as `time`
FROM chat_history
GROUP BY fuid
) ch2
ON ch1.fuid=ch2.fuid AND ch1.time=ch2.time
WHERE ch1.new=1 AND ch1.tuid=6
ORDER BY ch1.time DESC
...以及最新的已读消息(更改 ch1.new = 0)。
问题:对于 new=1,我没有得到 fuid=83 的记录,而对于 new=0,我没有得到 fuid=58 的记录。
我没有得到这种行为,也找不到解决方案。