2009-03-02 78 views
-1
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 

编辑:我需要数据库中最高的ID。我做对了吗?

awwww,你们都杀了玩笑。在2009年,我维护这段代码...

+0

这是2009年,只是,你知道,备案。 – overslacked 2009-03-02 19:34:34

+0

这样的笑话可能是TheCodeProject.com(http://www.codeproject.com/Feature/CodingHorrors.aspx)中的“编码恐怖”留言板,但它们不适合本网站。 – 2009-03-02 19:47:15

回答

6

MAX(id)是什么?

2

更快的方法将是

Q = “选择从TBL MAX(ID)”

这将总是导致在单排用一个值(具有最高ID)。

0

如果你觉得古怪,你也可以颠倒SQL顺序并选择最上面的一个。

0

我不知道SQL的你特别的味道,但在很多你可以做,如:

Q =“SELECT * FROM TBL其中ID =(选择TBL b最大(b.ID)) “

4

是的,但速度最慢。

不仅如此,你的前提是错误的。 不需要需要从数据库中获得最高的ID。

我的心理调试能力告诉我你要用这个来创建一个新的ID,并用一条新记录将该ID插回到数据库中。这完全是错误的做法,并会导致您的网站上的代码竞争条件。相反,请将您的ID设置为Identity列,并让Sql Server自动创建您的ID。然后在使用Sql Server的scope_identity()函数插入后,选择新的ID返回到结果中。

即使我错了,你只是想用它来检索最近的记录,你真正想要的可能是类似scope_identity()(如果你刚创建新记录作为同一会话的一部分)或ident_current(tbl) (如果新记录可能是由其他人创建的或者是前一段时间创建的)。在这最后一种情况下,你确实应该有别的方法来确定什么是“最近的”。

0

其他的答案是正确的,我只是建议你给它一个别名,所以你可以访问它:

select max(ID) as "maxID" from tbl 
... 
qid = qv("maxID")