如何在SQL中用LIKE语句对同前缀用户ID分组求和列?
实现同前缀用户ID的分组求和
要把带-1、-2这类后缀的用户ID按前缀合并分组求和,这里给两种可行方案,其中也包含你提到的LIKE语句实现方式:
方案1:直接截取前缀(推荐)
利用字符串截取函数提取用户ID的前缀(以-为分隔符取第一部分),再按这个前缀分组求和,逻辑简单且高效:
SELECT SUBSTRING_INDEX(user_id, '-', 1) AS user_prefix, SUM(your_target_column) AS total_sum FROM your_table GROUP BY user_prefix;
这个方法会自动把ihusain、ihusain-1、ihusain-2统一识别为ihusain前缀,直接完成分组聚合。
方案2:结合LIKE语句实现
如果一定要用LIKE来匹配同前缀的用户ID,可以先提取所有唯一前缀,再通过LIKE关联原表完成求和:
SELECT prefixes.user_prefix, SUM(t.your_target_column) AS total_sum FROM (SELECT DISTINCT SUBSTRING_INDEX(user_id, '-', 1) AS user_prefix FROM your_table) AS prefixes JOIN your_table t ON t.user_id LIKE CONCAT(prefixes.user_prefix, '%') AND (t.user_id = prefixes.user_prefix OR t.user_id REGEXP CONCAT('^', prefixes.user_prefix, '-[0-9]+$')) GROUP BY prefixes.user_prefix;
这里通过LIKE匹配前缀开头的用户ID,再用正则约束后缀为-数字格式,避免误匹配类似ihusainabc这类无关ID。
内容的提问来源于stack exchange,提问作者Imran Husain
相关产品推荐
相关产品推荐

