ユーザー間のメッセージを保持する単純なテーブルがあります。テーブル構造は次のようになります
sender receiver message sendtime
1 2 m1 2012-01-01 12:12:12
2 1 m2 2012-01-01 12:50:20
1 2 m3 2012-01-01 12:55:55
1 3 m4 2012-01-02 05:05:05
1 4 m5 2012-01-05 05:20:20
4 1 m6 2012-01-06 06:05:00
4 1 m7 2012-01-07 11:11:11
2 4 m8 2012-01-08 05:01:01
さて、ID 1 のユーザーの場合、次のような結果が必要です
sender receiver message sendtime
1 2 m3 2012-01-01 12:55:55
1 3 m4 2012-01-02 05:05:05
4 1 m7 2012-01-07 11:11:11
つまり、特定のユーザーが送信者であるか受信者であるかに関係なく、そのユーザーの最近のメッセージが必要です。
簡単に思えますが、単一の mysql クエリを作成する方法が見つかりません。
また、この種のソリューションでテーブルの設計が不十分な場合は、提案が必要です。
注: 私が言及する必要があると思うことの 1 つは、たとえば、ユーザー 1 とユーザー 2 の間に複数の通信があることです。
ほとんどのユーザーは、送信者 1、受信者 2、送信者 2、受信者 1 の 1 つのレコードを取得するクエリを提案しています。これは同じユーザー 1 とユーザー 2 間の通信であるため、これら 2 つのレコードは必要ありません。 1 つは、他の各ユーザーで指定されたユーザーの最新のものです。
ありがとう、