获取具有计数的不同记录

时间:2012-09-08 12:20:11

标签: mysql sql count distinct

我有一张包含personidmsg列的表格。

personid, msg
--------------
 1,      'msg1'
 2,      'msg2'
 2,      'msg3'
 3,      'msg4'
 1,      'msg2'

我想为每个msg获得总计personid。 我正在尝试这个查询:

select distinct personid, count(*)
FROM mytable;

我也尝试了这个查询

select distinct personid, count(msg)
FROM mytable;

但没有得到实际的结果。 我希望这个结果用于以上数据:

id, count
--------
1,   2
2,   2
3,   1

1 个答案:

答案 0 :(得分:5)

您只需使用GROUP BY代替DISTINCT即可。所以试试这个查询:

SELECT personid, COUNT(msg) 
FROM mytable 
GROUP BY personid
ORDER BY personid;

See this SQLFiddle

  

GROUP BY可让您使用汇总功能,例如AVG()MAX()MIN(),   SUM()COUNT()DISTINCT只会删除重复项。