MySQL查询不是';t显示最近的用户名
我的统计查询有一个特殊问题。我想获取连接到服务器的每个客户端的最新用户名、持续时间和连接计数。以下是查询:MySQL查询不是';t显示最近的用户名,mysql,sql,Mysql,Sql,我的统计查询有一个特殊问题。我想获取连接到服务器的每个客户端的最新用户名、持续时间和连接计数。以下是查询: SELECT name, SUM(duration) AS time, COUNT(auth) AS connections FROM analytics WHERE duration IS NOT NULL GROUP BY auth ORDER BY time DESC; 问题是他们的查询没有显示最新的用户名。即使客户机已经更改了用户名,它也会首先进入数据库中的客户机(由auth标识
SELECT name, SUM(duration) AS time, COUNT(auth) AS connections
FROM analytics
WHERE duration IS NOT NULL
GROUP BY auth
ORDER BY time DESC;
问题是他们的查询没有显示最新的用户名。即使客户机已经更改了用户名,它也会首先进入数据库中的客户机(由auth标识)
有没有一种方法可以在上面的查询中获取客户机的最新用户名,而不会大大降低查询速度
示例表:
| id | auth | name | duration |
|----|------|------|----------|
| 1 | u123 | Fire | 50 |
| 2 | u555 | Dan | 20 |
| 3 | u123 | Ice | 30 |
| name | time | connections |
|------|----------|-------------|
| Fire | 80 | 2 |
| Dan | 20 | 1 |
我得到的:
| id | auth | name | duration |
|----|------|------|----------|
| 1 | u123 | Fire | 50 |
| 2 | u555 | Dan | 20 |
| 3 | u123 | Ice | 30 |
| name | time | connections |
|------|----------|-------------|
| Fire | 80 | 2 |
| Dan | 20 | 1 |
我想要什么
| name | time | connections |
|------|----------|-------------|
| Ice | 80 | 2 |
| Dan | 20 | 1 |
如果您有最近注册用户的
时间戳
列。
您可以使用max()
我希望这会有帮助。只要分析一下这个想法。我假设您需要ID的最新身份验证顺序,因为没有其他数据可以获取它
SELECT A.name, B.time, B.connections
FROM analytics AS A
INNER JOIN
(
SELECT auth, MAX(ID) AS MAXID, SUM(duration) AS time, COUNT(auth) as connections
FROM analytics B
WHERE duration IS NOT NULL
GROUP BY auth
) AS B
ON A.auth = B.auth AND A.ID = B.MAXID
提供示例数据和预期结果会很有帮助……您是否有参数可以告诉您哪个用户名是最新的用户名?我认为没有它是不可能的。添加了样本数据,不,我没有参数。这或谈论类似的情况。阅读它们可能会有所帮助。表现不佳,我不确定它是否能提供预期的结果。