当前位置: 首页 > 面试题库 >

如何在SQL中返回第二个最新记录?

向嘉誉
2023-03-14
问题内容

如果这:

SELECT *
FROM Table
WHERE Date=( SELECT MAX(Date)
             FROM Table
           )

从表中返回最新记录,如何获取 第二个最新 记录?


问题答案:
SELECT * 
FROM Table
WHERE Date = ( SELECT MAX(Date) 
               FROM Table
               WHERE Date < ( SELECT MAX(Date) 
                              FROM Table
                            )
             ) ;

或者:

SELECT TOP (1) * 
FROM Table
WHERE Date < ( SELECT MAX(Date) 
               FROM Table
             ) 
ORDER BY Date DESC ;

或者:

SELECT *
FROM
  ( SELECT t.*
         , ROW_NUMBER() OVER(ORDER BY Date DESC) AS RowNumber
    FROM Table t
  ) AS tmp
WHERE RowNumber = 2 ;

如果该Date列具有唯一值,则所有三个查询将给出相同的结果。如果该列可以有重复的日期,则它们可能给出不同的结果(当并列在第一或第二位时)。如果在第二位有联系,则第一个查询甚至会在结果中提供多行。



 类似资料:
  • 问题内容: 我想从ElasticSearch索引返回最近的记录(前1个),类似于下面的sql查询; 能做到吗? 问题答案: 你有_timestamp在您的文档映射启用? 您可以在此处检查映射: 如果是这样,我认为这可能会获得最新的信息:

  • 希望我不会把事情搞复杂。我编写了以下SQL,返回用户他们最近的事务满足一个条件(TRANS_TYPE NOT IN(4,6,21,23)或DESTORIT_OPTION&64<>64)。 我通过使用 前面代码中的sub查询将返回所有用户的所有事务,并按DESC顺序对其进行排序,外部SELECT将通过检查rank 1事务来显示满足条件的用户。 我想要的是像这样的东西 FOREACH user如果用户

  • 问题内容: 我有一个带有时间戳字段的表。如何获得最近3个月的数据? 特别是,三月是我当前的月份,请说 03/2012 。我只需要返回3月,2月和1月的记录。 问题答案: 今天前3个月: 从第一个月开始:

  • 问题内容: 我正在有限的时间里进行学校项目,导致代码混乱和混乱。我正在尝试打开两个jFrame,一个显示聊天界面,另一个显示图像。从第一个窗口调用时,我想调用一个方法,该方法多次更改第二个窗口上的图像,并且之间有一些延迟。但是,图像不会改变。 我认为我的问题是由于在文本窗口中使用了一些示例代码,并试图合并我自己的修改而没有完全理解前者。在尝试查找此问题时,我仅发现人们根据计时器和in来更新其jFr

  • 我在一个活动中有一个列表视图,在自定义适配器中有一个信息图标。当用户点击该信息按钮时,下一个活动将打开,当用户点击更新按钮时,在下一个活动中标记出勤率后,第二个活动应该完成,第一个活动列表视图应该更新。 我成功地做了什么:我已经成功地标记了出席情况并更改了listview的颜色,但我在关闭第二个活动并重新启动第一个活动后这样做了。通过这种方式,由于再次开始活动,listview会得到更新。 我无法

  • 问题内容: 这似乎比我发现的要容易。我有一个表,其中包含名字和姓氏(由类型ID指定)以及名字的通用程度。例如: 我希望能够查询名字(NameType = 1)列表,该列表仅在更可能是名字而不是姓氏的情况下才包括名字(基于FrequencyPercentage)。使用此数据集,我的名字查询将包括John和Thomas,而我的LastNames查询将返回Smith和Wilson。 希望我能很好地解释。