mysql - MySQL:查找所有多个二级域
问题描述
我有一张桌子,上面有来自不同国家的数千个报价。一些优惠在不同国家/地区的不同域上运行。例如,supershop 为三个不同的国家/地区运行三个不同的域:
supershop.com、supershop.fr 和 supershop.nl
在我的数据库中,URL 条目可能看起来不同:
http://supershop.com
https://www.supershop.fr/home/index.php
https://supershop.nl
现在,如何选择相同 SLD(二级域名)名称的所有行?
它应该是这样的
SELECT
landingpage,
COUNT(landingpage)
FROM
angebote
GROUP BY REGEXP "^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}"
HAVING COUNT(landingpage) > 1
按此部分分组:[\.A-Za-z0-9\-]
任何解决方案/提示?
解决方案
您可以使用REGEXP_REPLACE
从每个 URL 中提取二级域,然后GROUP BY
是该值:
SELECT REGEXP_REPLACE(landingpage, "^(?:https?://(?:www\\.)?)([A-Za-z0-9-]+)\\.[a-zA-Z]{2,4}(/.*)?$", "\\1") AS sld,
COUNT(*) AS count
FROM angebote
GROUP BY sld
输出(用于您的样本数据)
sld count
supershop 3
请注意,我对您的正则表达式进行了一些小的修改,以使其可以REGEXP_REPLACE
用于提取二级域。
推荐阅读
- javascript - Window.scrollTo(0, 1) 隐藏地址栏不起作用
- powerquery - 结合2个自定义M函数解析文本和分类
- sql - wordpress中元和税收查询之间的关系OR
- php - 从 Laravel 运行 Python 脚本
- codeigniter-3 - 即使提供密码验证,登录页面也不会导航下一页
- image - ImageMagick 删除图像中的空白行
- sql-server - SQL FOR XML PATH 返回“非法名称字符”错误
- java - Java 命令提示符命令抛出“没有这样的文件或目录”
- swift - CoreData 崩溃错误 Xcode 11 Beta, IOS 13 Beta
- knockout.js - 为什么我在 viewModel 中的函数在文档就绪时被调用?