3

我有一张桌子personid和列msg

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
4

1 回答 1

5

您只需要使用GROUP BY而不是DISTINCT. 所以试试这个查询:

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

看到这个 SQLFiddle

GROUP BY允许您使用聚合函数,如AVG(), MAX(), MIN(), 等SUM()COUNT()同时DISTINCT仅删除重复项。

于 2012-09-08T12:21:53.230 回答