时间:2010-07-22 16:48:51

标签: tsql

DB中存在作为varchars存储的链接。有了这些链接,我想使用GROUP BY。

http://example.com
http://example.com
http://example.com

对该数据的SQL:

SELECT COUNT(*) c, Url
    FROM Advertisements
    GROUP BY Url

我想要这个输出:

c Url 
3 http://example.com

但相反,我得到了三次:

c Url 
1 http://example.com

为什么SELECT不对varchar字段进行分组?它们是相同的但GROUP BY没有检测到它。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果包含这些URL的字符串是存储的数据,则它们不是相同的URL,每个URL都是不同的,因此将每个URL放在一个不同的组中。

答案 1 :(得分:2)

结局不同

<强> 7 i18704

<强> 5 i18704

<强> 4 i18704

根据您的评论,我已按预期更新了他们的GROUP。你尝试这个时会得到什么?

CREATE TABLE #Advertisements
(
ID INT IDENTITY(1,1),
Url VARCHAR(200)
)

INSERT INTO #Advertisements VALUES
('http://example.com')

INSERT INTO #Advertisements VALUES
('http://example.com')

INSERT INTO #Advertisements VALUES
('http://example.com')



SELECT COUNT(*) c, Url
    FROM #Advertisements
    GROUP BY Url

答案 2 :(得分:1)

就像HLGEM和Martin说的那样,该字段中的整个文本必须相同才能使GROUP BY工作,你可以使用GROUP BY SUBSTRING(Url,0,30)之类的东西,这样你就会得到:

网址| COUNT

http://example.com | 3