次の構造の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 = from user id (重複を許可)、tuid = to user id (重複を許可)、new = status (read または not)。
次のクエリを使用して、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 のレコードが取得されません。
この動作が得られず、解決策が見つかりません。