【发布时间】:2021-05-10 21:01:31
【问题描述】:
我正在尝试获取按时间戳排序的 rec_p_id = 4 的最后一行。由于我不想让所有结果 WHERE rec_p_id = 4,所以我使用 GROUP BY 按 send_p_id 对其进行分组。
我的 SQL 查询如下所示:
SELECT *
FROM
( SELECT *
FROM chat
WHERE rec_p_id= "4"
ORDER
BY timestamp DESC) as sub
GROUP
BY send_p_id
我的桌子是这样的:
桌聊
| c_id | send_p_id | rec_p_id | timestamp |
|---|---|---|---|
| 1 | 3 | 4 | 2020-05-01 14:46:00 |
| 2 | 3 | 4 | 2020-05-01 14:49:00 |
| 3 | 3 | 4 | 2020-05-01 14:50:00 |
| 4 | 7 | 4 | 2020-05-01 12:00:00 |
| 5 | 4 | 7 | 2020-05-01 12:10:00 |
| 6 | 7 | 4 | 2020-05-01 12:20:00 |
| 7 | 9 | 4 | 2020-05-01 16:50:00 |
| 8 | 9 | 4 | 2020-05-01 17:00:00 |
我想获取最后出现的次数:
| c_id | send_p_id | rec_p_id | timestamp |
|---|---|---|---|
| 3 | 3 | 4 | 2020-05-01 14:50:00 |
| 6 | 7 | 4 | 2020-05-01 12:20:00 |
| 8 | 9 | 4 | 2020-05-01 17:00:00 |
但是我得到了所有第一个:
| c_id | send_p_id | rec_p_id | timestamp |
|---|---|---|---|
| 1 | 3 | 4 | 2020-05-01 14:46:00 |
| 4 | 7 | 4 | 2020-05-01 12:00:00 |
| 7 | 9 | 4 | 2020-05-01 16:50:00 |
我看到了我在这个问题中使用的查询:ORDER BY date and time BEFORE GROUP BY name in mysql
它似乎对所有人都有效。我的查询做错了什么? 提前致谢。
【问题讨论】:
-
不管你认为这个查询做什么,恐怕你错了。见meta.stackoverflow.com/questions/333952/…
-
@aajuu19 你有机会试试我的方法吗?
-
@Strawberry 感谢您的评论。下次我会记住这一点。
标签: mysql sql group-by mysql-5.7