SQL:如何获取无序列的最新值

时间:2014-05-19 15:17:15

标签: mysql sql

我需要查询我的DB以获取最新的UUID(意味着最后插入的UUID)。该值由应用程序生成。所以如果我只是做..

select uuid from Run where <some condition>

然后它返回多个UUID。我如何获得最新的?此表上有一个自动增量主要代理ID列以及创建日期,所以我可以这样做...

select max(id),uuid from Run where

但这迫使我在我的结果集中包含该ID列。我想这不是太糟糕,但只是想知道是否有一种优雅的方式我只能在结果集中返回UUID并仍然得到最新的。

我正在使用MySQL。

感谢。

3 个答案:

答案 0 :(得分:3)

只需对自己进行排序并限制输出。

SELECT uuid FROM Run WHERE <some_condition> ORDER BY id DESC LIMIT 1;

答案 1 :(得分:0)

最清晰/最明确的方式是写:

SELECT uuid
  FROM Run
 WHERE id =
        ( SELECT MAX(id)
            FROM Run
           WHERE <some condition>
        )
;

此外,请注意您不能写下您的建议:

select max(id),uuid from Run where     -- Bad! Will not work!

因为这会从符合条件的记录中任意选择uuid - 它,一般来说,选择实际对应uuid的{​​{1}} 1}}。 (这是在in §12.17.3 "MySQL Extensions to GROUP BY" of the MySQL 5.7 Reference Manual解释的,但是,如果你有一个max(id)子句,那么这个页面听起来好像只能解决这个问题。)

答案 2 :(得分:0)

我认为最简单的方法是使用limitorder by

select r.*
from Run r
where <some condition>
order by id desc
limit 1;