2

画像に示すように、単一のチャット テーブルがあります。フェイスブック風にチャット一覧をグループ化したい。ユーザー 2 の会話を選択した後のテーブル

ここでは、ユーザー 2 がログインしており、彼の会話は次を使用して選択されています。

SELECT * 
FROM  `chat`  `t` 
WHERE  `from` =2
OR  `to` =2
ORDER BY sent DESC

しかし、ここでは、2 と他のユーザーの間の最新の単一のエントリが必要です。2 は、from または to 列のいずれかに入れることができます。最終結果として、ID がそれぞれ 25 と 17 の 2 つのエントリが返されます。

4

2 に答える 2

1

これを試して

SELECT * 
FROM  `chat`  `t` 
WHERE id IN (SELECT MAX(s.id) FROM chat s WHERE s.`from` =2
OR  s.`to` =2 GROUP BY (IF(s.`from`=2, s.`to`, s.`from`)))
ORDER BY sent DESC
于 2013-07-22T11:47:40.730 に答える