2010-01-29 34 views
5

目前有一個數據庫格式如下:MySQL的組由共享根域的URL數據行

ID(唯一ID)
網址:http://domain.com/page.html

URL是無論是從同一個域並來自不同的領域。

這也需要在一個查詢中完成,以便在向最終用戶顯示數據時可以使用限制等內容。

數據

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 
+0

歡迎時到StackOverflow,@thisisrobv。 – Sampson 2010-01-29 20:34:38

+0

url字段上的常規'order by'會不會將它們排序爲簇? – Sampson 2010-01-29 20:36:15

+0

對不起,我添加了數據,並期望輸出更好地解釋我正在嘗試做什麼。 – thisisrobv 2010-01-29 20:38:19

回答

2

這應該工作,但也可能遇到問題連接表

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

工作很好,謝謝! – thisisrobv 2010-01-29 21:20:11

0

如果您不是指ORDER BY url,則GROUP BY也可以用於substring()等函數。

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'