【发布时间】:2015-02-24 14:39:39
【问题描述】:
我今天早些时候问了一个类似的问题,但我遇到了另一个需要帮助的问题。
我有一个日志系统,它可以扫描服务器并对在给定时刻在线的每个用户进行编目。这是我的桌子的样子:
-----------------
| 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
所以在第一次扫描时系统发现只有尼克在线。 2 日,它找到了尼克和约翰。 3 号只有 John 还在线。
我的问题是我想在每次扫描时获取连接到服务器的唯一用户总数。换句话说,我想要每次扫描时连接的用户总数。思考计数器。
从上面的例子中,我想从 sql 得到的结果是:
1
2
2
编辑:
这是我迄今为止尝试过的,但它是错误的:
SELECT COUNT(DISTINCT(found_user)) FROM ab_logs WHERE DATE(timestamp) = CURDATE() GROUP BY scan_id
我试过的返回这个:
1
2
1
【问题讨论】:
-
它的 1,2,2 或 1,2,1????
-
@AnkitBajpai 我希望它返回的是 1,2,2(因为当尼克断开连接时,扫描仍然找到 2 个用户)。我尝试的返回 1,2,1,这不是我想要的。
-
为什么预期结果
1,2,2??第一次扫描 - 只有尼克,第二次 - 有两个尼克和约翰,当第三次扫描时 - 只有约翰! @SMA 答案绝对正确 -
@Alex,没有。你一定误解了我的问题。克里斯托夫做对了。
标签: mysql