MySQL计算组数

时间:2015-02-24 12:10:01

标签: mysql

我有一个相当复杂的陈述,我正在努力写作。我不知道怎么做,或者即使它是可能的。

我有一个日志记录系统,可以扫描服务器并对在给定时刻在线的每个用户进行编目。这是我的表格的样子:

-----------------
|    ab_logs    |
-----------------
|      id       |
|    scan_id    |
|  found_user   |
-----------------

id是一个自动增量主键。除此之外没有其他实际价值。

scan_id是一个整数,在每次成功扫描所有用户后递增。因此,我可以将结果与不同的扫描分开。

found_user。存储扫描期间在线找到用户的位置。

以上将生成一个如下所示的表:

id  |  scan_id  | found_user
----------------------------
1   |     1     |   Nick
2   |     2     |   Nick
3   |     2     |   John
4   |     3     |   John

所以在第一次扫描时,系统发现只有尼克在线。在第二天它发现了尼克和约翰。只有约翰仍然在线。

我知道我可以通过以下查询获得给定扫描期间在线用户的数量:

SELECT COUNT(*) FROM ab_logs WHERE scan_id = $scan_id

我的问题是,我想在一个结果中获得所有扫描的上述。如果没有循环上述查询X次,这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用GROUP BY功能,如下所示:

SELECT COUNT(*) FROM ab_logs GROUP BY scan_id

答案 1 :(得分:1)

是的,您可以像这样使用GROUP BY

SELECT COUNT(*) FROM ab_logs GROUP BY scan_id