我有一个相当复杂的陈述,我想写。我不知道该怎么做,也不知道是否可能。
我有一个日志系统,可以扫描服务器,并在给定的时刻对在线的每一个用户进行编目。下面是我的桌子的样子:
-----------------
| 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次,这是可能的吗?
发布于 2015-02-24 12:15:30
您可以按以下方式使用GROUP BY函数:
SELECT COUNT(*) FROM ab_logs GROUP BY scan_id发布于 2015-02-24 12:19:01
是的,您可以这样使用GROUP BY:
SELECT COUNT(*) FROM ab_logs GROUP BY scan_idhttps://stackoverflow.com/questions/28695453
复制相似问题