代码之家  ›  专栏  ›  技术社区  ›  mark

当比较值由两个单独的字段组合时,是否可以用一个SQL获取表中的最小(最大)行?

  •  0
  • mark  · 技术社区  · 14 年前

    是否可以编写一条SQL语句(不使用存储过程),以毫秒精度获取具有最小时间戳的行?实际上,时间戳已经足够好了,但是它必须是毫秒,因为几行可能有相同的datewithoutmillizes值,但是毫秒不同。

    现在,我已经完成了在数据库中存储总毫秒数的想法,而不是前面提到的两列。但是,我必须确保我没有遗漏任何东西,如果有一个SQL允许有两列,并且仍然能够获取确切的最小值-我想知道它。

    提前感谢所有的好心人。

    编辑

    2 回复  |  直到 14 年前
        1
  •  1
  •   Fredrik Mörk    14 年前

    对于不同的数据库,它可能看起来不同,但在SQL Server中,您应该能够执行以下操作:

    SELECT TOP 1 
        Field1, Field2, 
        dateadd(ms, MillisecondsField, DateWithoutMillisecondsField) TimeStamp
    FROM Table
    ORDER BY TimeStamp DESC
    
        2
  •  0
  •   JonPayne    14 年前

    在SQLServer中,不需要在SELECT子句中指定时间字段。你可以这样写:

    SELECT TOP 1
           field1
         , field2
      FROM table
     ORDER BY DateWithoutMilliseconds ASC
         , Milliseconds ASC;