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

提供示例数据和预期结果会很有帮助……您是否有参数可以告诉您哪个用户名是最新的用户名?我认为没有它是不可能的。添加了样本数据,不,我没有参数。这或谈论类似的情况。阅读它们可能会有所帮助。表现不佳,我不确定它是否能提供预期的结果。