我想要表记录如下:
---------------------------------------------------------------------------
id | receiver_user_id | sender_user_id | message_text | insertdate
---------------------------------------------------------------------------
6 | 33 | 42 | OLD | 2013-05-08 10:08:53
8 | 33 | 43 | ddddd | 2013-05-07 19:01:45
7 | 33 | 38 | Ipsum | 2013-04-25 10:27:35
---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我正在使用这个查询:
SELECT *
FROM (`player_messages`)
WHERE `receiver_user_id` = '33'
GROUP BY sender_user_id
ORDER BY `player_messages`.`insertdate` DESC
Run Code Online (Sandbox Code Playgroud)
并获取如下表记录。
---------------------------------------------------------------------------
id | receiver_user_id | sender_user_id | message_text | insertdate
---------------------------------------------------------------------------
6 | 33 | 43 | ddddd | 2013-05-07 19:01:45
4 | 33 | 42 | NEW | 2013-05-07 10:08:58
7 | 33 | 38 | Ipsum | 2013-04-25 10:27:35
---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
请帮忙。提前致谢。
您正在从表中选择所有字段SELECT *,但仅按 分组sender_user_id,并且非聚合列的值将不受决定,并且不受 order by 的影响。
你应该这样写你的查询:
SELECT player_messages.*
FROM player_messages
WHERE (receiver_user_id, sender_user_id, insertdate) IN (
SELECT receiver_user_id, sender_user_id, MAX(insertdate)
FROM player_messages
WHERE receiver_user_id='33'
GROUP BY receiver_user_id, sender_user_id)
ORDER BY player_messages.insertdate DESC
Run Code Online (Sandbox Code Playgroud)
这将返回所有接收者和发送者组合具有最大插入日期的player_messages 行。
| 归档时间: |
|
| 查看次数: |
42737 次 |
| 最近记录: |