如何获取最后一条记录/最大值

Posted

技术标签:

【中文标题】如何获取最后一条记录/最大值【英文标题】:How to get last record / max value 【发布时间】:2015-04-17 18:09:01 【问题描述】:

我有 PWD,应该是 0001、0002、0003、0004

所以当我想在数据库中添加新记录时,我会得到这样的最大值

sql.Query(" SELECT pwrd FROM users WHERE pwrd = (SELECT max(pwrd ) FROM users)")
        Dim highest As Integer = (sql.SQLDataset.Tables(0).Rows(0).Item(0))

通过这种方式,我从表示例“0004”中获得最高行 现在,当添加新查询时,我需要将该值增加 1 为“0005”

如果我去TextBox1.Text = Highest + 1 我只会得到 5 没有“000”

【问题讨论】:

我要么使用自动增量列类型,要么在插入触发器期间设置此值。尝试在这样的代码中执行此操作会导致竞争条件。 在插入触发器下进行自动增量是什么意思。该查询将如何进行 【参考方案1】:

您可能希望将 ZEROFILL 属性添加到该字段。

你可以像这样创建你的表:

ALTER TABLE users MODIFY pwd INT(3) zerofill AUTO_INCREMENT not null;

编辑:

您可以尝试删除表并像这样创建:

CREATE TABLE users
(
   ID INT IDENTITY(1, 1)
   , pwd  AS RIGHT('000' + CAST(Id AS VARCHAR(4)), 4)
  )

【讨论】:

刚刚google了一下,大概是这样,但是怎么做 @AnelHodzic:- 我建议改变你的表,然后简单地插入密码。要更改表,您可以使用此 sql:ALTER TABLE tbl MODIFY pwd INT(3) zerofill AUTO_INCREMENT not null; 问题是这是学校作业,我有主键自动增量,即 ID,它看起来像这样。 “pokit.org/get/img/a63e74fe27d4720d2afcf9d41e74a320.jpg”也可以设置这个自动增量吗? @AnelHodzic:- 您提供的链接已损坏。无论如何,我已经添加了 alter table 脚本。您只需要运行该脚本即可完成所有工作。 非常感谢你帮助我,但我把它弄错了 MS SQL,这就是我得到的pokit.org/get/?120a1aef7e07c64b1e649b62e9ff1a35.jpg'MODIFY'附近的语法错误。【参考方案2】:
TextBox1.Text = (Highest + 1).ToString.PadLeft("0",4)

未测试,因此语法可能有点偏差。

【讨论】:

以上是关于如何获取最后一条记录/最大值的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - 如何从数组列表中获取最后一条记录? [复制]

如何使用聚合函数在 MySQL 查询中获取分组记录的第一条和最后一条记录?

如何使用聚合函数在 MySQL 查询中获取分组记录的第一条和最后一条记录?

如何从 Sqlite 获取最后一条记录?

如何使用 Hibernate 从 Mysql 获取最后一条记录?

如何从 sql 查询中获取第一条和最后一条记录?