MySQL组由url共享根域的数据行

时间:2010-01-29 20:31:37

标签: sql mysql

目前有一个数据库格式如下:

  

id(唯一身份证)
  网址:http://domain.com/page.html

网址来自同一个域和来自不同的域。

这也需要在一个查询中完成,以便在向最终用户显示数据时可以使用限制等内容。

数据

1, http://domain.com/about.html
2, http://domain.com/index.html
3, http://anotherdomain.com/index.html
4, http://anotherdomain.com/contact.html

预期输出
(我只想返回每个组的第一个url(第一个是数据排序顺序,这个例子是“id ASC”),其中一个组由共享一个根的url组成域。)

1, http://domain.com/about.html
3, http://anotherdomain.com/index.html

3 个答案:

答案 0 :(得分:2)

这应该适合你:

SELECT T2.id, url FROM (
    SELECT MIN(id) AS id FROM Table1
    GROUP BY SUBSTRING_INDEX(url, '/', 3)
) AS T1
JOIN Table1 AS T2
ON T1.id = T2.id

对于您的测试数据,我得到了这个:

1, 'http://domain.com/about.html'
3, 'http://anotherdomain.com/index.html'

答案 1 :(得分:2)

这应该可以,但在连接表时可能会遇到问题

SELECT REPLACE(REPLACE(SUBSTRING_INDEX(LOWER(table.url), '/',  3), 'www.', ''), 'http://', '') AS domain
FROM table
GROUP BY domain

答案 2 :(得分:0)

如果你不是指ORDER BY url,GROUP BY也可以处理像substring()这样的函数。