MySQL Query未显示最新的用户名

时间:2016-10-03 02:07:26

标签: 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标识)。

有没有办法在上面的查询中获取客户端的最新用户名而不会减慢它的速度?

示例表:

| 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      |

2 个答案:

答案 0 :(得分:0)

如果您有最近注册用户的ProcessThing列。 你可以使用TimeStamp

来获取它
max()

我希望它会有所帮助。只是分析一下这个想法。

答案 1 :(得分:0)

我假设你想要ID最近的auth命令,因为没有其他数据可以获得它。

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