按最后一次出现分组

aajuu19

我正在尝试获取时间戳记为rec_p_id = 4的最后一行。由于我不希望所有结果都在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 时间戳记
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 时间戳记
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 时间戳记
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

我看到了我在此问题中使用的查询:mysql中的GROUP BY名称之前的ORDER BY日期和时间

它似乎对所有人都有效。我的查询出了什么问题?提前致谢。

scaisEdge

期待您的预期结果似乎是您在寻找

select max(c_id) c_id, send_p_id, min(timestamp) timestamp
from chat WHERE rec_p_id= "4" 
group by send_p_id
ORDER BY c_id

分组依据是聚合结果..
不使用聚合功能会产生不可预测的结果,并且在版本> 5.6中会产生错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章