我需要数据库中的最高ID。我这样做了吗?

时间:2009-03-02 19:25:19

标签: sql asp-classic

    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年,我维护这段代码......

6 个答案:

答案 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")