如何使用特定的列值在我的msql中查找最新行

问题描述 投票:0回答:4

我有一个名为Access_Status的表,其中包含诸如以下的值:

enter image description here

我希望表仅返回Active用户,即Tom Sullivan和John Martin。

它应该NOT返回Marta Jenkins的活动行,因为Marta实际上已被暂停。

什么是最好的方法?

mysql sql select greatest-n-per-group
4个回答
0
投票

您可以使用相关的子查询过滤每个name的最新行,并确保状态为活动:

select a.*
from access_status a
where 
    t.last_updated_date = (
        select max(a1.last_updated_date) 
        from access_status a1 
        where a1.initial_id = a.initial_id
    )
    and a.access = 'ACTIVE'

为了提高性能,您需要在(intial_id, last_updated_date)上建立索引。将access作为最后一列添加索引might也很有帮助。


0
投票

此方法将帮助您根据需要获取行

SELECT * FROM Access_Status GROUP BY Name WHERE Access="ACTIVE";

0
投票

"ACTIVE"的最新行列表:

SELECT ast1.*
FROM Access_Status ast1
LEFT JOIN Access_Status ast2 ON
  ast1.Initial_ID = ast2.Initial_ID AND ast1.Last_Updated_Date < ast2.Last_Updated_date
WHERE ast2.Initial_ID IS NULL
AND ast1.Access = 'ACTIVE'
;

0
投票

一种检查方式:

select A.* from Access_Status A where A.Access = 'ACTIVE' and A.Name not in (select Name from Access_Status WHERE Access != 'ACTIVE');
© www.soinside.com 2019 - 2024. All rights reserved.