代码之家  ›  专栏  ›  技术社区  ›  Haoest

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

  •  -1
  • Haoest  · 技术社区  · 16 年前
        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 回复  |  直到 16 年前
        1
  •  6
  •   dusoft    16 年前

    马克斯(身份证)呢?

        2
  •  4
  •   Joel Coehoorn    16 年前

    更重要的是,你的前提是错误的。 不要 需要从数据库中获取最高ID。

    我的通灵调试能力告诉我你要用这个来创建一个新的ID,并用一个新记录将这个ID插入数据库。这完全是错误的做法,并将导致在您的网站上的代码种族条件。相反,将您的ID设置为Identity列,并让Sql Server自动创建您的ID。然后使用Sql Server的 scope_identity() 功能。

    即使我错了,你只是想用它来检索最近的记录,你真正想要的可能是 (如果您刚在同一会话中创建了新记录)或 ident_current(tbl) (如果新记录可能是由其他人创建的,或者是在某个时间之前创建的)。在最后一个例子中,你真的应该有别的方法来确定什么是“最近的”。

        3
  •  2
  •   Renze de Waal    16 年前

    q=“从tbl中选择最大(ID)”

    这将始终导致具有一个值的单行(具有最高id)。

        4
  •  0
  •   Ian Jacobs    16 年前

        5
  •  0
  •   Paul Tomblin    16 年前

    我不知道您对SQL的特殊爱好,但在许多情况下,您可以这样做:

    q=“从tbl中选择*其中ID=(从tbl b中选择max(b.ID)”

        6
  •  0
  •   MikeW    16 年前

    其他答案是正确的,我建议您给它一个别名,这样您就可以访问它:

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