用于对重复项进行分组和计数的SQL语句

时间:2014-07-17 20:09:22

标签: php mysql sql

我有一个名为Reports的表,看起来有点像这样:

|--|-------|------|-------------|-----------|------|
|ID|User_ID|Mod_ID|Mod_Timestamp|Mod_Comment|tstamp|
|--|-------|------|-------------|-----------|------|
|0 |   0   |   1  | 1387025342  |  XYZBLEH  |123123|
|--|-----------------------------------------------|

我还有另一个名为reports_users的表,如下所示:

|--|----|
|ID|Name|
|--|----|
|0 |Damo|
|--|----|

来自Report表的用户ID和Mod_Id都来自Report_Users表中的ID,现在我需要的是有时在Mod_ID列中会有重复项,我想要做的是将这些组合在一起并将它们计为排序重复的计数,所以它看起来像这样:

|--|----|-----|
|ID|Name|count|
|--|----|-----|
|0 |Damo|  16 |
|--|----|-----|

我可以将名称添加到表格中,但我似乎无法对其进行分组或计算它们而不会造成问题,我已经通过内部联接声明完成了此操作,但我似乎无法弄清楚如何做我需要的。如果这里的任何人都可以帮助我,那我就是最棒的。

这是我上面提到的SQL

SELECT * FROM request as request_table INNER JOIN(SELECT name, id as uid from request_user)AS user ON(request_table.Mod_id = user.uid)

此致 达明

1 个答案:

答案 0 :(得分:2)

根本不需要子选择:

SELECT reports.ID, reports_users.Name, count(reports.ID) AS count
FROM reports
LEFT JOIN reports_users ON reports.User_ID = reports.ID
GROUP BY reports.ID