メッセージ テーブルを使用してチャット アプリケーションを作成します。
そのような特定のユーザーと通信するユーザーごとに3つの最近のメッセージを選択しようとします: ユーザー17には彼と通信する3人のユーザーがいます。各ユーザーの最後の3つのメッセージを選択します
17 22
22 17
22 17
19 17
17 19
19 17
21 17
17 21
17 21
クエリを作成しようとしましたが、3 つ以上のメッセージを選択した最初または最後のユーザーを除くすべてのユーザーで良い結果が得られました。クエリ:
    SELECT *, 
         DATE_FORMAT((FROM_UNIXTIME(m1.create_time)),'%k:%i, %d.%m.%Y') 
         as create_time_display
    FROM t_messages m1
    WHERE (m1.to =17 OR m1.from =17)  AND (
        SELECT COUNT(*) 
        FROM t_messages  m2
        WHERE m1.from = m2.from AND m2.id >= m1.id AND
        (m2.to = 17 OR m2.from = 17)
    ) <=3`
うまく機能させる方法はありますか?
ありがとう。