我有一个包含以下架构和示例值的表。

mysql - 如何基于另一个列值获取最大值(列值)-LMLPHP

我正在尝试编写一个查询,该查询将为每个用户提供连接状态以及断开状态的max(timestamp)。

我正在寻找所需查询的输出模式示例为:

用户名| Connected_MAX_Timestamp | Disconnected_MAX_Timestamp

我尝试过的查询是这样的:

从socketinfo组中按用户名,socketstatus选择用户名,socketstatus,max(timestamp)

和相同的输出是:

mysql - 如何基于另一个列值获取最大值(列值)-LMLPHP

有人可以告诉我如何实现所需的输出吗?

最佳答案

只需使用条件聚合:

select username,
       max(case when socketstatus = 'Connected' then timestamp end) as max_connected_timestamp,
       max(case when socketstatus = 'Disconnected' then timestamp end) as max_disconnected_timestamp,
from socketinfo
group by username;

10-07 22:35