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

如何在MySQL登录时长统计查询中关联tbl_user获取用户名

解决方案:关联用户表获取姓名信息

要在现有登录时长统计查询中同时展示用户的名字和姓氏,只需要将统计结果与tbl_user表做关联即可,下面是修改后的完整查询语句:

SELECT 
    tu.USER_ID,
    tu.FIRST_NAME,  -- 替换为tbl_user中存储名字的实际字段名
    tu.LAST_NAME,   -- 替换为tbl_user中存储姓氏的实际字段名
    td1.UTL_TASK,
    SUM(td1.UTL_DURATION) AS UTL_DURATION_TOTAL 
FROM ( 
    SELECT 
        A.PK_USER_TIME_LOG_ID, 
        A.CLIENT_ID, 
        A.PROJECT_ID, 
        A.USER_ID, 
        A.UTL_DTSTAMP, 
        A.UTL_LATITUDE, 
        A.UTL_LONGITUDE, 
        A.UTL_EVENT, 
        A.UTL_TASK, 
        TIMESTAMPDIFF(SECOND, A.UTL_DTSTAMP, B.UTL_DTSTAMP) AS UTL_DURATION 
    FROM tbl_user_time_log A 
    INNER JOIN tbl_user_time_log B ON B.PK_USER_TIME_LOG_ID = (A.PK_USER_TIME_LOG_ID + 1) 
    WHERE 
        A.USER_ID = '465615' 
        AND A.UTL_DTSTAMP BETWEEN '2019-02-24' AND '2019-03-04' 
        AND A.UTL_EVENT <> 'CLOCK OUT' 
) AS td1
INNER JOIN tbl_user tu ON td1.USER_ID = tu.USER_ID  -- 关联用户表,确保字段名匹配
GROUP BY 
    tu.USER_ID,
    tu.FIRST_NAME,
    tu.LAST_NAME,
    td1.UTL_TASK;

关键修改说明:

  • 关联用户表:在外层查询中通过INNER JOIN关联tbl_user(这里用别名tu简化代码),关联条件是两个表的用户ID字段一致(如果你的tbl_user表中用户ID字段名不是USER_ID,比如是PK_USER_ID,需要把tu.USER_ID改成对应字段)。
  • 添加姓名字段:在SELECT列表中加入用户的名字和姓氏字段,记得替换成你实际表中对应的字段名(比如有的表可能用USER_FIRST_NAME或FNAME)。
  • 更新分组规则:根据SQL的分组要求(尤其是开启ONLY_FULL_GROUP_BY模式时),需要把新增的姓名字段也加入到GROUP BY子句中,避免语法错误。

如果需要同时统计多个用户的登录时长,只需要去掉WHERE子句中的A.USER_ID = '465615'条件即可,查询会自动关联每个用户的姓名信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:00:08