sql中筛选第一条记录

  • 时间:
  • 浏览:0
  • 来源:大发5分快乐8_极速5分11选5

image.png

RANK() OVER (PARTITION BY emp_no ORDER BY from_date DESC) AS rank表示把表根据emp_no进行分区,不想在分区内根据from_date进行降序排列,排序结果生成一列命名为rank。

这人 人事先在问题报告 中间提到了另一两个emp_no会对应多条职位信息,不想对于每个emp_no的记录进行另一两个降序排列,接下来这人 人只时需把中间的结果当成另一两个子查询不想筛选rank = 1 就好了。

image.png

结果如下:

本文介绍两种 妙招 去实现结果:

综上,原因各位目前使用的是Oracle,推荐各位使用妙招 二:

功能:在原有表的基础加上上另一两个根据条件排序的伪列。

嵌套另一两个group by+max()子查询获取最近的职位信息。

原因我笔记本只装了mysql的环境,全都就越来越给各位展示效果了。

peace~

通过rank over partition by函数实现,这人 目前是Oracle独有的函数,原因你用的是mysql原因sql server就没妙招 使用了。

这人 人现在有一张表titles,共有另一两个字段,分别是emp_no(员工编号),title(职位),from_date(起始时间),to_date(事先开使了了时间),记录的是员工在某个时间段内职位名称,原因会位于升职,转岗之类的,中间emp_no原因会对应多个职位,这人 人现在要取到所有员工最近的职位信息,包括离职员工。

结果如下: