我有一個信息表如下:MySQL的 - 誰發送的最新消息抓取用戶
基本上我想要什麼,我想取n
用戶誰發送的最新消息到組。所以它必須按from_user_id
分組,並按id
降序排列。我有以下查詢:
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;
與此問題是,當我按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