私は、メッセージテーブルを持っていますグループ。だから、from_user_id
でグループ化し、降順でid
でソートする必要があります。MySQLの以下のように最新のメッセージを送ったフェッチユーザーが
SELECT `users`.`id` AS `user_id`, `users`.`username`, `users`.`image`
FROM `group_messages`
JOIN `users` ON `users`.`id` = `group_messages`.`from_user_id`
WHERE `group_messages`.`to_group_id` = 31
GROUP BY `users`.`id`
ORDER BY `group_messages`.`id` DESC;
これで問題があり、Iグループuser.id
により、最小のid
フィールドを持つ行が考慮されている:私は、次のクエリを持っています。そのため私が得るものはid
が降順である順序ではありません。
グループ化する方法はありますか?最大でid
を考慮しますか?それとも私は別の方法でアプローチすべきですか?
ありがとうございます。
編集:私は、私はそれを得たと思います。
SELECT `x`.`id`, `users`.`id` AS `user_id`, `users`.`username`, `users`.`image`
FROM (SELECT * FROM `group_messages` ORDER BY `group_messages`.`id` DESC) `x`
JOIN `users` ON `users`.`id` = `x`.`from_user_id`
WHERE `x`.`to_group_id` = 31
GROUP BY `users`.`id`
ORDER BY `x`.`id` DESC;
既に注文済みのリストから選択するだけでした。
別の方法でアプローチする必要があります。一般的な方法は、集約を使用して最新のメッセージIDを取得し、残りのフィールドに参加させることです。 –
@GordonLinoffあなたは私を育てることができますか? – OguzGelal