mysql - 根据常见的第一个单词将字符串分组在一起
问题描述
我有一份不同物品的清单,其中一些在末尾有尺寸和颜色说明。例如男子足球夹克 - L / 黑色。
我希望能够对所有男士足球夹克产品进行分组,无论尺寸或颜色如何。
╔═══════════════════════════════════╤══════╗
║ Item │ Sold ║
╠═══════════════════════════════════╪══════╣
║ Men's Football Jacket - L / Blue │ 5 ║
╟───────────────────────────────────┼──────╢
║ Men's Football Jacket - M / Black │ 3 ║
╟───────────────────────────────────┼──────╢
║ Women's Socks - S │ 8 ║
╟───────────────────────────────────┼──────╢
║ Women's Socks - L │ 10 ║
╟───────────────────────────────────┼──────╢
║ Gloves │ 12 ║
╚═══════════════════════════════════╧══════╝
Output:
╔═══════════════════════╤══════╗
║ Item │ Sold ║
╠═══════════════════════╪══════╣
║ Men's Football Jacket │ 8 ║
╟───────────────────────┼──────╢
║ Women's Socks │ 18 ║
╟───────────────────────┼──────╢
║ Gloves │ 12 ║
╚═══════════════════════╧══════╝
从示例中可以看出,有些项目在字符串中只有大小,而其他项目既没有指定大小也没有指定颜色。
如果这有所作为,我正在使用 MySQL。
解决方案
如果要按 Item 的值进行分组,直到 1st -
,请使用SUBSTRING_INDEX()
提取字符串的该部分:
SELECT SUBSTRING_INDEX(Item, '-', 1) Item,
SUM(Sold) Sold
FROM tablename
GROUP BY SUBSTRING_INDEX(Item, '-', 1)
请参阅演示。
结果:
> Item | Sold
> :-------------------- | ---:
> Gloves | 12
> Men's Football Jacket | 8
> Women's Socks | 18
推荐阅读
- java - java.sql.SQLException: 无法使用类加载器 sun.misc.Launcher$AppClassLoader@60e53b93 启动数据库“”
- c++ - 如果满足条件,则更新一个值,而无需输入两次变量名
- php - 将项目从另一个 php 脚本推送到数组?
- google-chrome - 由于浏览器 cookie,无法从 Power Bi 连接到 Google BigQuery 数据源
- python - raise ValueError("反序列化需要一个会话")
- c - 如何使用 C/C++ 解密 AES/ECB/Nopadding 数据?
- r - 忽略 NA(缺失值)
- python - SyntaxError 与“不在”运算符上的列表理解
- git - PhpStorm:从远程服务器下载时同步行结束
- python - 如何在函数中创建具有不同类属性的类?