我有一个相当复杂的陈述,我正在努力写作。我不知道怎么做,或者即使它是可能的。
我有一个日志记录系统,可以扫描服务器并对在给定时刻在线的每个用户进行编目。这是我的表格的样子:
-----------------
| 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次,这可能吗?
答案 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