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

如何在MySQL GROUP BY中将相似数据库条目视为同一分组?

解决MySQL中相似颜色条目的分组问题

针对你遇到的颜色名称因标点、空格、大小写差异被视为不同条目的问题,这里提供一个通用的标准化解决方案,无需逐个处理每种变体:

核心思路

通过标准化颜色字符串,将所有变体转换为统一格式,再基于标准化后的字符串进行分组。具体步骤包括:

  • 统一大小写(比如转成小写)
  • 将所有非字母的字符(点、横线、多连字符等)替换为空格
  • 合并连续空格为单个空格并去除首尾空格

这样无论原颜色是I.Khaki、I-KHAKI还是I--Khaki,都会被转换为相同的标准化字符串,从而被归为同一分组。

完整SQL查询示例(MySQL 8.0+)

MySQL 8.0及以上版本支持REGEXP_REPLACE函数,能高效处理所有非字母字符的替换:

SELECT 
    r.contract_no,
    -- 生成标准化的颜色名称(小写、无特殊符号、统一空格)
    TRIM(REGEXP_REPLACE(LOWER(r.color), '[^a-z]', ' ')) AS standardized_color,
    -- 可选:显示该分组下的一个原颜色示例(比如最早出现的)
    MIN(r.color) AS sample_original_color,
    ROUND(SUM(r.meter_yard_length), 0) AS Total_Length_Contract,
    ROUND(SUM(IF(r.quality = 'A', r.meter_yard_length, 0)), 0) AS A_Quality_length,
    ROUND(SUM(IF(r.quality = 'B', r.meter_yard_length, 0)), 0) AS B_Quality_length
FROM 
    your_table_name r  -- 替换为你的实际表名
GROUP BY 
    r.contract_no,
    standardized_color  -- 按合同号+标准化颜色分组
ORDER BY 
    r.contract_no,
    standardized_color DESC;

兼容MySQL 5.x的方案

如果你的MySQL版本低于8.0,没有REGEXP_REPLACE,可以通过嵌套REPLACE处理常见的分隔符(虽然不如正则通用,但能覆盖大部分场景):

SELECT 
    r.contract_no,
    -- 手动替换常见符号为空格,再统一格式
    TRIM(REPLACE(REPLACE(REPLACE(LOWER(r.color), '-', ' '), '.', ' '), '_', ' ')) AS standardized_color,
    MIN(r.color) AS sample_original_color,
    ROUND(SUM(r.meter_yard_length), 0) AS Total_Length_Contract,
    ROUND(SUM(IF(r.quality = 'A', r.meter_yard_length, 0)), 0) AS A_Quality_length,
    ROUND(SUM(IF(r.quality = 'B', r.meter_yard_length, 0)), 0) AS B_Quality_length
FROM 
    your_table_name r
GROUP BY 
    r.contract_no,
    standardized_color
ORDER BY 
    r.contract_no,
    standardized_color DESC;

额外说明

  • 这个方案能处理所有符号、空格、大小写的变体,但无法解决拼写错误(比如Khaki写成Khakki)。如果需要处理拼写问题,建议建立一个颜色映射表,将相似拼写的颜色映射到标准名称,再基于映射表分组。
  • 如果需要保留所有原颜色的展示,可以用GROUP_CONCAT(r.color SEPARATOR ', ')来列出该分组下的所有原始颜色值。

内容的提问来源于stack exchange,提问作者Muhammad Usama Ahsan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:21:33