首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -选择查询返回所有cols,但每个组合只返回一个标识列

MySQL -选择查询返回所有cols,但每个组合只返回一个标识列
EN

Database Administration用户
提问于 2021-12-22 19:20:42
回答 1查看 98关注 0票数 1

我需要编写一个mysql查询,它返回所有列,但每组标识列中只有一个列。即

我在3个字段(firstName、lastName、effDate)上有一个主键的表。我可以使用相同的firstName和lastName拥有x行,但是所有的行都有不同的effDates。我在下面包含了一组数据。我需要编写一个返回最近的firstName + lastName组合的查询。这个是可能的吗?类似于:

代码语言:javascript
复制
SELECT DISTINCT(firstName, lastName), * FROM table ORDER BY effData DESC;

示例数据:

FirstName lastName effDate

威尔约翰逊2021-02-02

威尔约翰逊2021-03-02

威尔约翰逊2021-04-02

山姆·瑞德2021-02-23

山姆·瑞德2021-04-28

示例返回:

FirstName lastName effDate

威尔约翰逊2021-04-02

山姆·瑞德2021-04-28

EN

回答 1

Database Administration用户

发布于 2021-12-22 20:58:05

要从示例数据中获取所需的结果,只需按firstName, lastName分组并取max effDate

代码语言:javascript
复制
select firstName
      ,lastName
      ,max(effDate) effDate
from   table
group by firstName
        ,lastName

如果希望从包含最新effDate的行获取更多信息,可以使用分析函数提供可用于筛选的有序列:

代码语言:javascript
复制
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不能为空)

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/305303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档