我有一个表,其中包含一个名为 domain 的字段,其中包含如下数据:
domain.com
sub1.domain.com
sub2.domain.me
sub3.domain.co.uk
我想编写一个查询来获取数据库中基本域的计数;这将是 3 基于:
domain.com
sub2.domain.me
sub3.domain.co.uk
任何人都知道如何完成这项工作?我对有多个结尾的域 (.co.uk) 感到困惑。
我有一个表,其中包含一个名为 domain 的字段,其中包含如下数据:
domain.com
sub1.domain.com
sub2.domain.me
sub3.domain.co.uk
我想编写一个查询来获取数据库中基本域的计数;这将是 3 基于:
domain.com
sub2.domain.me
sub3.domain.co.uk
任何人都知道如何完成这项工作?我对有多个结尾的域 (.co.uk) 感到困惑。
你可以使用这样的东西:
SELECT
COUNT(DISTINCT
SUBSTRING_INDEX(TRIM(TRAILING '*' FROM col), '.',
CASE WHEN TRIM(TRAILING '*' FROM col) LIKE '%.uk' THEN -3 ELSE -2 END))
FROM
domains;
请在此处查看小提琴。
编辑
我再次阅读了您的问题,我认为您正在寻找这样的东西:
SELECT
DISTINCT d1.col
FROM
domains d1 LEFT JOIN domains d2
ON LOCATE(REVERSE(d2.col), REVERSE(d1.col))=1
AND LENGTH(d1.col)>LENGTH(d2.col)
WHERE
d2.col IS NULL
小提琴在这里。