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

MySQL中如何将同一UID的多行数据合并为单行显示?

同一UID多行数据合并为单行的实现方法

原始数据(同一UID的多行记录):

UID    TIME MIN     MON     MOUT        AIN       AINOUT
14406  2022-08-7   ontime     -          -          -
14406  2022-8-7      -      ontime      -          -
14406  2022-08-07     -      -         ontime      -
14406  2022-08-07     -       -         -          ontime

期望合并后的单行结果:

UID    TIME MIN     MON     MOUT        AIN       AINOUT
14406  2022-08-7   ontime  ontime    ontime   ontime

实现方案

可以利用SQL的GROUP BY分组结合聚合函数MAX()来实现:

SELECT 
    UID,
    MAX(`TIME MIN`) AS `TIME MIN`,
    MAX(MON) AS MON,
    MAX(MOUT) AS MOUT,
    MAX(AIN) AS AIN,
    MAX(AINOUT) AS AINOUT
FROM your_table_name
GROUP BY UID;

说明

同一UID下每个字段只有一个有效取值(ontime),其余均为-,MAX()函数会自动筛选出每个字段的有效值(字符串比较中ontime优先级高于-);通过GROUP BY UID将同一UID的所有行合并为单行。

如果TIME MIN存在格式不一致的情况(如示例中的2022-08-7和2022-08-07),可以先转换为统一日期格式再聚合:

SELECT 
    UID,
    DATE_FORMAT(STR_TO_DATE(`TIME MIN`, '%Y-%m-%d'), '%Y-%m-%d') AS `TIME MIN`,
    MAX(MON) AS MON,
    MAX(MOUT) AS MOUT,
    MAX(AIN) AS AIN,
    MAX(AINOUT) AS AINOUT
FROM your_table_name
GROUP BY UID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:09:13