-1

私は次の表を持っています

mes_id | user_a | user_b | message | room | time
------------------------------------------------------   
1      | 23     | 24     | hello   | 1    | 5676766767

user_aを送りmessageましuser_broom 1

ルームごとに特定のユーザー (user_b など) が最後に受信したすべてのメッセージを取得したいのですが、クエリをいくつか試しましたが、適切なクエリを取得できませんでした。

この解決策は私にはうまくいきませんでした: sql_group_by_max

アップデート

5.5.18 MySQL サーバーを使用しています

わかった

これは私に結果を与えましたありがとう

SELECT * 
FROM messeges C
JOIN (
       SELECT room, user_a, MAX( messeges.date ) AS max_time
       FROM messeges
       GROUP BY room, user_a
      )a 
ON a.room = c.room

AND a.user_a = c.user_a
AND a.max_time = c.date

WHERE c.user_b =  '396'
4

2 に答える 2

1

これを試して:

select * from chat C join 
(select  room,user_b,MAX([time]) as max_time
from chat
group by room,user_b)a
on a.room=c.room
and a.user_b=c.user_b
and a.max_time=c.[time]

複数の行が必要な場合(SQLサーバーで)

with cte as (select *,ROW_NUMBER () 
     over (partition by room,user_b order by [time] desc) as rownum from chat)
select * from cte order by rownum
于 2012-08-06T08:12:49.550 に答える
0

これを試して:

   Select *
FROM chat a
INNER JOIN ( Select  user_a, user_b , room ,MAX(time) as max_time
    FROM chat
    group by user_a, user_b , room) b on a.user_a=b.user_a and a.user_b=b.user_b and a.room=b.room
于 2012-08-06T08:18:39.143 に答える