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

如何在MariaDB/MySQL中将同ID的两行合并为一行?

解决方案

核心思路

按id分组,利用聚合函数忽略NULL值的特性,将同一id下各列的非NULL有效值合并到同一行。

具体实现

通用SQL写法(适配MySQL、PostgreSQL、SQL Server)

SELECT
  id,
  MAX(center) AS center,
  MAX(right) AS right
FROM your_table_name
GROUP BY id;

MAX()函数会自动跳过NULL值,只保留同一id下对应列的非NULL值,最终将两条记录合并为一行。

复杂场景适配(指定非NULL值优先级)

如果同一id下某列存在多个非NULL值,需要按规则保留特定值时,可使用窗口函数:

SELECT DISTINCT
  id,
  COALESCE(FIRST_VALUE(center) OVER (PARTITION BY id ORDER BY CASE WHEN center IS NOT NULL THEN 0 ELSE 1 END), center) AS center,
  COALESCE(FIRST_VALUE(right) OVER (PARTITION BY id ORDER BY CASE WHEN right IS NOT NULL THEN 0 ELSE 1 END), right) AS right
FROM your_table_name;

该写法会优先选取每个id下对应列的第一个非NULL值,适合需要自定义值优先级的场景。

注意事项

  • 请将your_table_name替换为你实际的数据表名称
  • 若使用字符串类型列,MAX()会取字典序最大的非NULL值,需根据业务需求选择合适的聚合逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:01:25