【问题标题】:get only last record based on ids [closed]仅根据 ID 获取最后一条记录 [关闭]
【发布时间】:2019-11-09 13:36:01
【问题描述】:

我正在构建聊天应用程序,我只想根据用户显示最后一条记录 就像我已经发送了 1000 条消息,但我只与 10 人聊天,那么我需要获取 10 人的姓名和最后一条消息,无论是他们发送给我还是我最后发送给他们

请参阅上表并给我解决方案,例如我只想从最后两条记录中获取一条记录。

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    您可以使用相关子查询进行过滤:

    select t.*
    from mytable t
    where created = (
        select max(created)
        from mytable t1
        where t1.m_from = t.m_from and t1.m_to = t.m_to
    )
    

    这将只为您提供每个(m_from, m_to) 元组的最新消息(根据created 列中存储的日期)。

    如果您想要(m_from, m_to) 的最新消息 (m_to, m_from),那么:

    select t.*
    from mytable t
    where created = (
        select max(created)
        from mytable t1
        where 
            (t1.m_from = t.m_from and t1.m_to = t.m_to)
            or (t1.m_from = t.m_to and t1.m_to = t.m_from)
    )
    

    【讨论】:

    • 假设created foreach m_from, m_to 组合在created 列中不能有重复,这确实应该给出每个组合的最新消息记录,否则不清楚哪个记录将是max where created values tie.. 如果有疑问,可以将这些日期时间更改为 datetime(6),而不是让窗口更小,除非你是超人,否则没有人能打字那么快:-)....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2017-10-29
    • 2015-08-13
    • 1970-01-01
    • 2012-01-25
    • 2015-01-29
    • 2010-09-11
    相关资源
    最近更新 更多