不会写sql了

david___ 2018-03-27 04:54:32
需求:有一个聊天记录表,如下
id from to message timeline
1 a h xxxxxxxx 10:24:35
2 c h xxxxxxxx 10:26:20
3 h a xxxxxxxx 10:30:56
4 c h xxxxxxxx 10:32:27
5 a h xxxxxxxx 10:35:25
6 h c xxxxxxxx 10:42:45
7 h b xxxxxxxx 10:45:32

我现在只知道h,我想查出来 每个人h 聊天的最后两条记录,应该怎么写查询语句。
...全文
825 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
boluoxia 2018-04-02
  • 打赏
  • 举报
回复
参考 六、按name分组取最大的两个(N个)val
SELECT 
    X.*
FROM
    TB X
WHERE
    2 > (SELECT 
            COUNT(*)
        FROM
            TB
        WHERE
            TB.from = X.from AND TB.to = X.to
                AND timeline > X.timeline)
ORDER BY X.fro , timeline;
zhangyiant 2018-04-01
  • 打赏
  • 举报
回复
能够单条语句搞定确实显示sql的功底,但是不是所有问题都有必要一条语句搞定的。 写起来难,维护也难。
crynono 2018-03-27
  • 打赏
  • 举报
回复
这种情况很多地方都遇到过,有时候总想偷懒一个语句想搞定。。。 但有个比较麻烦的方法,虽然麻烦,但思路清晰,写个proc, cursor=select ... from group by from,to order by timeline while() if cursor.from 同一个from已经出现两次,就这行记录不处理,但前两条记录要保存下来。此处省略逻辑部分,只讲思路 cursor.next()

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧