假设我想用SQL(Sybase)执行此操作:使用最新的时间戳记查找记录的所有字段。编写获取有关SQL max查询结果的其他信息
一种方法是这样的:
select * from data where timestamp = (select max(timestamp) from data)
这是一个有点傻,因为它会导致两个查询 - 首先要找到最大的时间戳,然后找到该时间戳的所有数据(假设它是唯一的,是的 - 我有一个时间戳索引)。更重要的是,它似乎没有必要,因为max()已经找到了我感兴趣的行,所以再次查找它是浪费的。
有没有办法直接访问max()返回的行的字段?
编辑:所有答案我看到的基本上都是聪明的黑客 - 我一直在寻找做一些像MAX(字段1).field2的语法方式来访问该行的字段2,最大字段1
* upvote * - 这是第一个也是正确的答案,但不适用于sybase – naumcho 2009-12-10 20:14:12
请注意,如果您有多个具有相同时间戳的行,则只会获得一个,未定义哪一个你会得到。这取决于你的应用程序是否可能。 – 2009-12-10 20:14:26
TOP至少在版本12.5和可能从12版本的Sybase(ASE)中肯定可用。 – AdamH 2009-12-16 22:09:01