不确定这是否可行。有两个表,一个是国家代码:
e.g。
id | code | country
1 .us United States
2 .ru Russia
等等(约200多行)
另一个是网址:
http//:example.gov.us
http://example.gov.ru/index.php
http://xyz.gov.us/test.html
等等。
我不知道会有什么网址,所以我必须抓住每个国家/地区代码,然后以某种方式查询网址以查找与国家/地区代码匹配的内容,并计算每个网址的数量。
例如(?)
gov.[country code]
理想情况下,我希望输出按国家/地区名称进行分组并计算,例如,使用上述网址作为示例,可能会导致:
country | total
United States | 2
Russia | 1
就像我说的那样,不确定这是否可以在MySQL中使用正则表达式,子串等进行。很想知道它是否可以。
答案 0 :(得分:1)
你可以使用这样的查询:
SELECT
c.country,
COUNT(*)
FROM
countries c INNER JOIN URLS u
ON SUBSTRING_INDEX(SUBSTRING_INDEX(url, 'http://', -1), '/', 1)
LIKE CONCAT('%', c.code)
GROUP BY
c.country
请参阅小提琴here。
使用SUBSTRING_INDEX(url, 'http://', -1)
,您可以在http://
http://example.gov.ru/index.php ---> example.gov.ru/index.php
然后在此字符串上使用SUBSTRING_INDEX(..., '/', 1)
,如果没有/
example.gov.ru/index.php ---> example.gov.ru
然后您可以检查example.gov.ru LIKE '%.ru'
答案 1 :(得分:0)
select country, count(*) total
from country_codes c
join urls on urls.url RLIKE CONCAT("^http://[^/]+\\.gov\\.", c.code, "($|/)")
group by county