2013-03-04 72 views
1

我有以下表SQL得到与MAX()

ID  Version   
--- ----------  
123  1   
124  2   
125  3   
126  4   
127  5   
128  6  

现在我需要得到ID值,其中版本号是最大

什么我能做的就是

select ID from tbl where version = (select max(version) from tbl) 
相关的列值

我不想使用这个,因为我需要在另一个查询中的连接中使用这个部分,我不希望进一步复杂化。

回答

1

您可以使用select FIRST()

SELECT FIRST(id) FROM tbl ORDER BY Version DESC 

或者使用LIMIT 1选项数量限制的结果:

SELECT id FROM tbl ORDER BY Version DESC LIMIT 1 
+1

这些都不是标准SQL,OP没有指定数据库。 (编辑:实际上,我不确定什么是SQL标准的一部分,但更相关的是,我知道有数据库引擎广泛使用,不支持这两种。) – hvd 2013-03-04 07:03:39

+0

@ hvd你是对的,但是OP应该提及DBMS是与其相关的,猜测他不得不一劳永逸地为他工作。 – CloudyMarble 2013-03-04 07:14:02

0

你提到,你需要这样的加盟,让这样的事情应该做它

select * 
from table_1 as t1 
    join (
     select id, 
      row_number() over (order by version desc) as rn 
     from table_2 
) as t2 on t1.id = t2.id and t2.rn = 1 

(Thi s是ANSI SQL,因为您没有提及DBMS - 但应该适用于大多数现代DBMS)