ユーザーがアドレス指定または送信したすべてのメッセージを選択することになっているmysqlクエリを使用しています。すべてのメッセージを同じ UID でグループ化して、異なるユーザーごとに 1 つのスレッドを表示する必要があります (これは、同じ UID を持つ最後のメッセージを除くすべてのメッセージを削除する必要があることを意味します)。私の問題は、GROUP BY を使用してそれを実行し始めたことですが、実際には残っている行が最新ではなく古いメッセージである場合があります。
これは私が試していたものです:
SELECT `UID`, `Name`, `Text`, `A`.`Date`
FROM `Users`
INNER JOIN (
(
SELECT *, To_UID AS UID FROM `Messages` WHERE `From_UID` = '$userID' AND `To_UID` != '$userID'
)
UNION ALL
(
SELECT *, From_UID AS UID FROM `Messages` WHERE `To_UID` = '$userID' AND `From_UID` != '$userID'
)
) AS A
ON A.UID = Users.ID
GROUP BY UID // This doesn't work
UID ごとに最新の日付を含む行のみを表示するにはどうすればよいですか?