0

我有一个表,其中包含一个名为 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) 感到困惑。

4

1 回答 1

0

你可以使用这样的东西:

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

小提琴在这里

于 2013-04-30T19:01:17.577 回答