获取具有计数的不同记录

Pan*_*kaj 3 mysql sql count distinct

我有一张桌子personidmsg柱子.

personid, msg
--------------
 1,      'msg1'
 2,      'msg2'
 2,      'msg3'
 3,      'msg4'
 1,      'msg2'
Run Code Online (Sandbox Code Playgroud)

我希望得到msg每个人的总数personid.我正在尝试这个查询:

select distinct personid, count(*)
FROM mytable;
Run Code Online (Sandbox Code Playgroud)

我也试过这个查询

select distinct personid, count(msg)
FROM mytable;
Run Code Online (Sandbox Code Playgroud)

但没有得到实际的结果.我想要以上数据的结果:

id, count
--------
1,   2
2,   2
3,   1
Run Code Online (Sandbox Code Playgroud)

him*_*056 5

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

SELECT personid, COUNT(msg) 
FROM mytable 
GROUP BY personid
ORDER BY personid;
Run Code Online (Sandbox Code Playgroud)

看到这个SQLFiddle

GROUP BY让您使用聚合函数,如AVG(),MAX(),MIN(), SUM(),COUNT()等而DISTINCT只是删除重复.