【问题标题】:SQL - How do I select a "Next Max" recordSQL - 如何选择“Next Max”记录
【发布时间】:2014-10-16 04:09:16
【问题描述】:

这很有趣, 我有一个表格,“地址”,其中包含地址详细信息列表,其中一些缺少字段。 我想识别这些行,并将它们替换为以前的地址行,但是这些只能是不是帐户上最新地址的帐户,它们必须是以前的地址。 每个地址都有一个序列号(1、2、3、4 等),因此我可以轻松识别 MAX 地址并使其不是帐户上的最新地址,但是我该如何扫描有效的地址,"最大 -1”,还是“比最大小一”? 任何帮助将不胜感激。

【问题讨论】:

  • 数据示例、您的代码、预期结果将有助于得到答案
  • 天啊。您是否为此使用某种关系数据库管理系统?
  • @Strawberry 它被标记为sqlmysql 等等。所以我会假设,是的。
  • @ChristianGollhardt 很高兴知道是哪一个。

标签: mysql sql sql-server sybase


【解决方案1】:

试试这个:

SELECT MAX(field) FROM table WHERE field < (SELECT MAX(field) FROM table)

顺便说一句:这是一篇好文章,描述了如何achieve nth row

【讨论】:

    【解决方案2】:
    SELECT TOP 1 field 
        FROM(
             SELECT DISTINCT TOP 2 field
               FROM table
                 ORDER BY field DESC
        )tbl ORDER BY field;
    

    【讨论】:

      【解决方案3】:

      这将返回第 1 个或第 n 个最大记录。

      ;WITH Distincts as (
          SELECT DISTINCT field from table
          )
          ,
      NextMax as (
          select field, ROW_NUMBER() over (order by field desc) as RN from Distincts 
          )
      select * from NextMax where RN = 2
      

      【讨论】:

        猜你喜欢
        • 2014-10-19
        • 2012-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        相关资源
        最近更新 更多