mysql - GROUP BY 在一列中匹配多个文本
问题描述
给定以下数据:
URL
some_url.com
some_url.com
some_url.co.uk
some_other_url.com
some_other_url.co.uk
some_other_url.co.uk
some_other_url.org
有没有办法构造一个查询结果;
some_url 3
some_other_url 4
目前,我要么通过 url 使用标准组,要么使用 LIKE 逐个查询聚合。有没有办法在一个查询中做到这一点?(目前使用 mysql,但会将这些数据转移到 postgresql)
添加一列以反映此分组(在插入时)会更好吗?(这感觉多余,但我猜会是最好的表现)
编辑:数据可以包含 www 和非 www 以及 http、https。此外,我还必须在其他包含(自由)文本值的列上做类似的事情。
解决方案
在 mysql 中使用SUBSTRING_INDEX
它可以帮助您在指定数量的分隔符出现之前从字符串中提取子字符串。
select count(*) as cnt, SUBSTRING_INDEX(c,'.',1) as val from cte
group by SUBSTRING_INDEX(c,'.',1)
推荐阅读
- html - HTML Scrape 现在得到不同的数字
- pyspark - Py4JJavaError:调用 o840.showString 时出错
- php - 为什么当我在 php 中调整图像大小时,我的新图像相对于第一张图像来说尺寸很大?
- reactjs - 为使用自由独奏的 Material-UI 自动完成设置最大长度
- excel - Excel 跨列唯一
- c# - 通用性能与类型性能
- javascript - javascript new Date() 对象中的最后一位数字是什么
- javascript - 在javascript的模块中导入函数和整个库之间的区别
- perl - 使用 crypt 内置验证散列密码与用户输入
- python - 楼梯算法速度提升