选择一个非重复值及其在列中显示的总和


Selecting a distinct value and the sum of times it shows up in a column

我有一个包含数百万个条目(不断增长的)的现有表,其中包括:

userid|name|etc...
1   frank    ...
1   frank    ...
2   joe      ...
5   sam      ...
1   franky   ...

我需要做的是返回一个表:

place|name|total
1   franky   3
2   sam      1
3   joe      1

其中 total 是 SUM(用户 ID = 不同的用户 ID)。

目前,我正在执行一个查询来SELECT DISTINCT userid from table然后对php中的每个返回值进行查询,我正在执行另一个查询以返回名称和sum(userid = userid)。

正如您可以假设的那样,这是非常费力的,并且现在所有值都需要很长时间。有没有办法通过执行 1 个查询来加快速度?

我认为你需要

SELECT  @a:=@a+1 AS `place`, name, COUNT(userid) AS `total`
FROM `your_table`, (SELECT @a:= 0) AS a
GROUP BY userid
SELECT   userid, COUNT(*)
FROM     some_table
GROUP BY userid