mysql - 从没有自动递增的表中获取最后一个主键

标签 mysql

我有一个有主键的表,出于某种原因,我被建议不要使用 AUTO_INCREMENT 标志。 因此,每次我必须插入一个新条目时,我都会搜索主键的最后插入值(最大值)。 然后我将它递增 1 以获得新 ID。 现在我面临的问题是,当插入第一个条目时,表中没有数据。

任何人都可以建议最佳检查方法 如果表中存在数据, 如果不将 id 设置为 1 并插入新行, 否则从表中获取最后一个 ID,将其递增 1,然后插入新行。

PS:mysql 的新手,所以语法有困难。

最佳答案

根据您的陈述“我搜索主键的最后插入值(最大值)”,我假设您当前正在执行类似这样的操作以获得最大现有 ID:

SELECT MAX(id_column) + 1 FROM my_table

如果您有一个空表,这当然会返回 NULL。在这种情况下,如果没有最大值,只需使用 IFNULL 处理 NULL 以返回 0:

SELECT IFNULL(MAX(id_column), 0) + 1 FROM my_table

如果表没有行,这将输出 1 作为下一个标识符。

关于mysql - 从没有自动递增的表中获取最后一个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59566855/

相关文章:

javascript - 将 JavaScript 与数据库表中的值相结合

php - MySQL - 根据用户的选择选择列 'Name' 其中列 'id' 和 'parent' 中的行彼此相等

php - 为什么 YII 博客可以很好地连接到 sqlite,但不能连接到 mysql?

php - 从数据库创建数组

mysql - 结合计数并加入mysql

php - 如何为 MySQL 远程数据库连接设置 Windows Server 2008?

mysql - 全新安装 VestaCP

mysql - 从 *varchar* 单元格中提取数字并在纯 mysql 中使用它们进行数学运算

php - 如何确定哪个查询执行时间最长

php - POST 空字段导致查询错误