SQL查询从域表获取基本域

时间:2013-04-30 18:57:53

标签: mysql

我有一个名为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)。

1 个答案:

答案 0 :(得分: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;

请参阅小提琴here

修改

我再次阅读你的问题,我认为你正在寻找这样的事情:

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

小提琴是here