【问题标题】:how can select last message from messages list like whatsapp?如何从诸如whatsapp之类的消息列表中选择最后一条消息?
【发布时间】:2021-06-28 09:15:41
【问题描述】:

我有两张表,tbl_msg 和 tbl_details。(如下图所示) 我想选择每个聊天的最后一条消息,比如嵌入SQL的图片,比如WhatsApp和Telegram聊天列表。(sql代码)。 请帮我。谢谢

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql phpmyadmin


【解决方案1】:

这可能是一种选择:

select *
from tbl_msg a join tbl_msg_details b on b.msg_id = a.msg_id
where b.details_id = (select max(c.details_id)
                      from tbl_msg_details c
                      where c.msg_id = b.msg_id  
                     )

【讨论】:

    【解决方案2】:

    一种方法是窗口函数:

    select md.*
    from (select md.*,
                 row_number() over (partition by msg_id order by time_st desc) as seqnum
          from tbl_msg_details md
         ) md
    where seqnum = 1;
    

    注意:您不需要tbl_msg,除非结果集中有您想要的表中的列。

    此外,不清楚“最后一条消息”是基于 time 列还是 id 列。这使用时间列,但如果这是您对“最后”的定义,您当然可以使用 id。

    【讨论】:

      【解决方案3】:

      也许有一个“分组依据”和一个“HAVING c.details_id = MAX(c.details_id)”最好不要?

      像这样:

      select *
      from tbl_msg a join tbl_msg_details b on b.msg_id = a.msg_id
      group by c.details_id
      HAVING c.details_id = MAX(c.details_id)
      

      【讨论】:

        猜你喜欢
        • 2017-02-20
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        • 2018-02-08
        • 2021-01-16
        相关资源
        最近更新 更多