2011-04-05 64 views
1

SELECT reporting.station FROM 报告 LEFT JOIN 通道 ON MD5(igmpurl)= reporting.station WHERE reporting.station = “N/A” ORDER BY !名称;的MySQL:计数某些值

导致该表:

Query like it is

现在,我想计算每个元件的数量,这应该什么样子:

Result like I'd would like to have it

注意:我知道约COUNT(station)这将返回行数(20),但是不是我想要什么。

任何想法如何在MySQL(InnoDB)中解决这个问题? 非常感谢和问候

回答

3
SELECT 
    reporting.station, COUNT(reporting.station) 
FROM 
    reporting 
LEFT JOIN 
    channel 
ON 
    MD5(igmpurl)=reporting.station 
WHERE 
    reporting.station!="n/a" 
GROUP BY reporting.station 
ORDER BY 
    name; 

试试这个。

+0

谢谢,反应很好,很有效! – Atmocreations 2011-04-05 07:26:42

1

使用COUNT()GROUP BY

在你的情况下,它应该是这样的:在同一个查询

SELECT 
    reporting.station, 
    COUNT(*) AS rep_station_count 
FROM 
    reporting 
LEFT JOIN 
    channel 
ON 
    MD5(igmpurl)=reporting.station 
WHERE 
    reporting.station!="n/a" 
GROUP BY 
    reporting.station 
ORDER BY 
    name; 

需要注意的是,允许正常和aggregate列(如AVG()COUNT()等)是MySQL的具体。

+0

(另外,我不太清楚你需要'ORDER BY',但这与你的问题没有直接关系) – Piskvor 2011-04-05 07:13:35

+0

也感谢你。我会给Headshota接受,因为他快了2分钟:P(他需要的声望比你更多:P)'ORDER BY'并不重要。我可以以某种方式获得最高计数的那一排吗?或者是“排序”计数并采取第一步的最简单方法? – Atmocreations 2011-04-05 07:28:45

+1

@Amocreations:为了获得最高的计数,你在正确的轨道上:在这种情况下,它会是'ORDER BY rep_station_count DESC' - 第一行是你想要的。最简单也可能是最快的:) – Piskvor 2011-04-05 07:34:27