set qv = createobject("adodb.recordset")
q ="select * from tbl order by ID"
qv.open q,QuoteConn,3,1,1
qv.movelast
qid=qv("ID")
qv.close
编辑:
啊,你们都开玩笑了。在2009年,我维护这段代码......答案 0 :(得分:6)
MAX(id)怎么样?
答案 1 :(得分:4)
是的,但是以最慢的方式。
更重要的是,你的前提是错误的。 您不需要从数据库中获取最高ID。
我的通灵调试功能告诉我你将使用它来创建一个新的ID,然后用新记录将该ID重新插入数据库。这完全是错误的方式,并将导致您的网站上的代码中的竞争条件。而是将您的ID设置为标识列,让Sql Server自动创建您的ID。然后在使用Sql Server的scope_identity()
函数插入后,将新ID重新添加到结果中。
即使我错了,你只是想用它来检索最新的记录,你真正想要的可能是scope_identity()
(如果你刚刚创建新记录作为同一会话的一部分) )或ident_current(tbl)
(如果新记录可能是由其他人创建的,或者是在一段时间之前创建的)。在最后一种情况下,你真的应该采用其他方式来确定“最新”的内容。
答案 2 :(得分:2)
更快捷的方法是
q =“从tbl”选择最大值(ID)
这将始终导致一行具有一个值(具有最高ID)。
答案 3 :(得分:0)
如果您感觉很古怪,您也可以撤消SQL顺序并选择最重要的顺序。
答案 4 :(得分:0)
我不知道您的SQL的特殊风格,但在许多情况下,您可以这样做:
q =“select * from tbl where ID =(从tbl b中选择max(b.ID))”
答案 5 :(得分:0)
其他答案都是正确的,我建议您给它一个别名,以便您可以访问它:
select max(ID) as "maxID" from tbl
...
qid = qv("maxID")