sql中筛选第一条记录

  • 时间:
  • 浏览:4
  • 来源:大发快3官方网址—大发快3APP下载

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

本文介绍五种土法律妙招去实现结果:

大家现在有一张表titles,共有另一个 多多多多字段,分别是emp_no(员工编号),title(职位),from_date(起始时间),to_date(开始英语 时间),记录的是员工在某个时间段内职位名称,肯能会位于升职,转岗相似 的,里边emp_no肯能会对应多个职位,大家现在要取到所有员工最近的职位信息,包括离职员工。

image.png

肯能我笔记本只装了mysql的环境,有些就没法给各位展示效果了。

综上,肯能各位目前使用的是Oracle,推荐各位使用土法律妙招二:

image.png

通过rank over partition by函数实现,你你这一目前是Oracle独有的函数,肯能你用的是mysql肯能sql server就没土法律妙招使用了。

结果如下:

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

peace~

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

大家日后 在问题图片里边提到了有另一个 多多多emp_no会对应多条职位信息,而且对于每个emp_no的记录进行有另一个 多多多降序排列,接下来大家只都要把里边的结果当成有另一个 多多多子查询而且筛选rank = 1 就好了。

结果如下: