MySQL:统计country列拆分数量并关联y_table查询结果
MySQL 查询方案
假设你的两张表分别为:
x_table:包含需要处理的country列(格式如China或China/Japan),以及其他业务字段y_table:包含与国家数量对应的配置字段(比如country_count存储1/2,output_format存储需要的格式模板)
核心查询语句
SELECT x.id, x.country, -- 计算拆分后的国家数量 1 + (LENGTH(x.country) - LENGTH(REPLACE(x.country, '/', ''))) AS country_num, -- 获取y_table中对应的格式内容 y.output_format FROM x_table x JOIN y_table y ON y.country_count = 1 + (LENGTH(x.country) - LENGTH(REPLACE(x.country, '/', '')))
关键逻辑说明
- 统计国家数量:通过
LENGTH(x.country) - LENGTH(REPLACE(x.country, '/', ''))计算/的个数,再加1得到实际国家数量(最多为2) - 关联逻辑:直接用计算出的
country_num匹配y_table中对应的数量字段,获取指定格式
如果需要拆分并展示每个国家(额外需求)
如果不仅要统计数量,还要拆分出每个国家并关联,可使用SUBSTRING_INDEX拆分:
SELECT x.id, -- 拆分第一个国家 SUBSTRING_INDEX(x.country, '/', 1) AS country1, -- 拆分第二个国家(如果存在) CASE WHEN LOCATE('/', x.country) > 0 THEN SUBSTRING_INDEX(x.country, '/', -1) ELSE NULL END AS country2, y.output_format FROM x_table x JOIN y_table y ON y.country_count = 1 + (LENGTH(x.country) - LENGTH(REPLACE(x.country, '/', '')))
内容的提问来源于stack exchange,提问作者micronyks
相关产品推荐
相关产品推荐

