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没有检测到它。有什么想法吗?
答案 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