我需要编写一个mysql查询,它返回所有列,但每组标识列中只有一个列。即
我在3个字段(firstName、lastName、effDate)上有一个主键的表。我可以使用相同的firstName和lastName拥有x行,但是所有的行都有不同的effDates。我在下面包含了一组数据。我需要编写一个返回最近的firstName + lastName组合的查询。这个是可能的吗?类似于:
SELECT DISTINCT(firstName, lastName), * FROM table ORDER BY effData DESC;示例数据:
威尔约翰逊2021-02-02
威尔约翰逊2021-03-02
威尔约翰逊2021-04-02
山姆·瑞德2021-02-23
山姆·瑞德2021-04-28
示例返回:
威尔约翰逊2021-04-02
山姆·瑞德2021-04-28
发布于 2021-12-22 20:58:05
要从示例数据中获取所需的结果,只需按firstName, lastName分组并取max effDate:
select firstName
,lastName
,max(effDate) effDate
from table
group by firstName
,lastName如果希望从包含最新effDate的行获取更多信息,可以使用分析函数提供可用于筛选的有序列:
select firstName
,lastName
,effDate
from (
select firstName
,lastName
,effDate
,row_number() over (partition by firstName, lastName order by effDate desc) rn
from table
) sq
where rn = 1(假设effDate不能为空)
https://dba.stackexchange.com/questions/305303
复制相似问题