You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据Accounts_Messages表的id对Accounts表结果排序?

解决方案

要实现按最后一条消息排序接收消息的用户,核心是先找到每个接收者对应的最新消息,再关联用户表排序。以下是具体SQL语句及逻辑说明:

SQL 语句

SELECT a.name
FROM Accounts a
JOIN (
    -- 子查询:获取每个接收者收到的最新消息ID(消息ID递增,最大ID即为最后一条)
    SELECT receiver_id, MAX(id) AS latest_msg_id
    FROM Accounts_Messages
    WHERE sender_id = 1 -- 筛选James发送的消息,可根据实际场景调整
    GROUP BY receiver_id
) msg ON a.id = msg.receiver_id
ORDER BY msg.latest_msg_id DESC;

逻辑说明

  1. 子查询部分:从Accounts_Messages中筛选目标发送者(示例中为James,sender_id=1)的所有消息,按receiver_id分组,通过MAX(id)拿到每个接收者对应的最后一条消息ID。
  2. 关联用户表:将Accounts表与子查询结果通过用户ID关联,匹配到对应的用户名称。
  3. 排序输出:按子查询中的latest_msg_id降序排列,即可得到「Roberto、Kirk、Lars」的期望顺序。

内容的提问来源于stack exchange,提问作者Jesse Gaspar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:20:26