我需要查询我的DB以获取最新的UUID(意味着最后插入的UUID)。该值由应用程序生成。所以如果我只是做..
select uuid from Run where <some condition>
然后它返回多个UUID。我如何获得最新的?此表上有一个自动增量主要代理ID列以及创建日期,所以我可以这样做...
select max(id),uuid from Run where
但这迫使我在我的结果集中包含该ID列。我想这不是太糟糕,但只是想知道是否有一种优雅的方式我只能在结果集中返回UUID并仍然得到最新的。
我正在使用MySQL。
感谢。
答案 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)
我认为最简单的方法是使用limit
和order by
:
select r.*
from Run r
where <some condition>
order by id desc
limit 1;