【发布时间】:2020-07-04 11:56:13
【问题描述】:
我遇到了一个结构如下的数据库表:每次用户登录时,都会在数据库中添加一条新记录,其中包含他们的用户名、设备、登录的 unix 时间戳以及其他 10 列内容。对于每个用户,我想选择他们最近的登录。所以我这样做:
with query1 as (
select
user,
MAX(last_login)
from
users_table
group by
user
)
作为检查,每个用户只与一行相关联,即他们的最新登录:
select count(distinct user) from query1 == select count(user) from query1
这就是问题所在。我想在选择中添加另一列,所以我也添加到group by ...
with query1 as (
select
user,
device,
MAX(last_login)
from
users_table
group by
user,
device
)
那么长度不相等。出于我问这个的原因,一些用户与单行相关联,而一些用户与多行相关联。
select count(distinct user) from query1 != select user from query1
有什么我没有考虑的,因为我想选择 1 列的最大值,但也要获取整行?
【问题讨论】:
标签: sql sql-server group-by sql-server-2012 max