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

MySQL多表左连接:获取最小日期及对应创建人问题求助

解决MySQL LEFT JOIN中获取最小日期对应记录及计算响应分钟数的问题

你的问题核心在于直接在主查询中使用聚合函数MIN()但没有正确分组,同时关联Users表时会因为Transactions的多条记录导致结果混乱。我们需要先精准定位每个Ticket对应的最早Correspond类型Transaction,再关联其他表完成计算。

修改后的查询语句

SELECT
    t.EffectiveId,
    t.Created AS 'Ticket Created',
    o.Content,
    tr_min.Min_Correspond_Date AS 'Min Correspond',
    u.Realname,
    -- 按规则计算响应分钟数
    CASE
        WHEN o.Content IS NULL THEN
            GREATEST(TIMESTAMPDIFF(MINUTE, t.Created, tr_min.Min_Correspond_Date), 0)
        ELSE
            GREATEST(TIMESTAMPDIFF(MINUTE, t.Created, o.Content), 0)
    END AS 'Computed Minutes'
FROM Tickets AS t
LEFT JOIN (
    -- 子查询:获取每个Ticket对应的最早Correspond Transaction的日期和Creator
    SELECT
        ObjectId,
        Created AS Min_Correspond_Date,
        Creator
    FROM (
        SELECT
            ObjectId,
            Created,
            Creator,
            -- 按ObjectId分组,按Created升序排序,标记第一条(最早)记录
            ROW_NUMBER() OVER (PARTITION BY ObjectId ORDER BY Created ASC) AS rn
        FROM Transactions
        WHERE Type = 'Correspond'
    ) AS ranked_tr
    WHERE rn = 1
) AS tr_min ON tr_min.ObjectId = t.EffectiveId
LEFT JOIN ObjectCustomFieldValues o ON o.ObjectId = t.EffectiveId
LEFT JOIN Users u ON u.id = tr_min.Creator
WHERE t.IsMerged IS NULL;

关键步骤说明

  1. 精准获取最早Transaction记录

    • 内层子查询用ROW_NUMBER()窗口函数,按ObjectId(关联Ticket的EffectiveId)分组,对每个分组内的Created日期升序排序,标记第一条记录(rn=1),这样就能拿到每个Ticket对应的最早Correspond Transaction的日期和创建人ID。
    • 这种方式比直接用MIN()聚合更可靠,因为它能同时锁定最小日期对应的Creator字段,避免聚合后关联错误的用户信息。
  2. 简化响应分钟数计算

    • 用GREATEST()函数替代嵌套CASE,直接将计算结果和0比较,取较大值,这样代码更简洁,逻辑清晰:如果分钟差为负,取0,否则取计算值。
  3. 关联用户表

    • 基于子查询拿到的CreatorID关联Users表,确保拿到的是最早Transaction对应的创建人姓名。

执行结果验证

运行上述语句后,会得到你期望的结果:

EffectiveIdTicket CreatedContentMin CorrespondRealnameComputed Minutes
5498372018-04-02 12:03:232018-04-02 08:35:222018-04-05 08:35:22Grover12485
6123022018-04-02 09:46:292018-04-02 01:02:222018-04-06 01:02:22Jane557687
6169822018-04-02 09:33:24NULL2018-05-03 09:33:24Kade668878

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:10:02