当前位置: 首页 > 知识库问答 >
问题:

MySQL查询id生成

高慈
2023-03-14

我有表,当我添加新行时,我想计算一个id号。

条件:

如果我有缺失的数字,请给出最小的一个(3),如果我没有缺失的数字,请给出一行中的下一个数字(5)

如何将此条件构建到查询中?

我的查询:

插入样本(产品)值(“$product”)

桌子

如果我缺少id,则解决方案

如果我没有丢失的id,则解决方案

共有1个答案

晏华奥
2023-03-14

MySQL具有生成自动增量ID的功能。请参阅https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html

该数字始终递增。它不会返回并填充缺失的id值。这是为了防止并发会话插入行时出现竞态条件而故意采取的必要措施。

如果您想在插入新行时找到未使用的值,您会发现为了防止两个并发会话使用相同的值,您最终不得不锁定整个表。这会损害许多应用程序的性能。

您应该放弃id值必须连续的要求。它们不是序号。您可能总是缺少id值,因为您可以删除行,或回滚插入行的事务,或者自动递增机制甚至可以在生成值时跳过值。

 类似资料:
  • 问题内容: 我已经搜索了可能的解决方案。并且我尝试了循环以及mysql_fetch_assoc和mysql_fetch_array的变体,但我仍然遇到资源ID#5:0:错误。 这是我认为会产生错误的代码。 问题答案: “资源ID#5:0”不是错误。这意味着您试图而不是尝试使用变量,例如对于fetch_assoc 使用$ row [column],对于fetch_row使用$ row [0],对于f

  • 问题内容: 我有一张桌子:student_marks 预期产量: 使用mysql用户定义的变量,可以使用查询来完成: 在不使用用户定义变量的情况下,有什么方法可以在msyql中实现? 问题答案: 基于您不想使用用户定义变量的原因,因为要避免有两个查询,一个用于初始化,一个用于使用它,您可以使用以下方法:

  • 我需要在节点中使用Nextcloud WebDAV客户端api。js项目。Nextcloud拥有MySQL数据库。对于这样的请求: MySQL从节点项目生成“睡眠”查询。这个查询大约需要30秒。 我不使用任何webdav npm包(只有请求和xml-js)。我也尝试通过Postman发送请求,但db查询也“睡眠”。NextCloud UI快速获得响应。问题出在哪里?

  • 本文向大家介绍MySQL 如何查询当前最新事务ID,包括了MySQL 如何查询当前最新事务ID的使用技巧和注意事项,需要的朋友参考一下 写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时长等用途)。 通常地,我们有两种方法可以查看当前的事务 ID: 1、执行 SHOW ENGINE INNODB STATUS

  • 本文向大家介绍MySQL查询从email-id账号获取域名,包括了MySQL查询从email-id账号获取域名的使用技巧和注意事项,需要的朋友参考一下 为此使用SUBSTRING_INDEX()。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是获取域名的查询- 输出结果 这将产生以下输出-

  • 问题内容: 我将不胜感激创建此查询的任何帮助。我尝试了好几种方法,但都没有碰到运气。由于我的问题很难表达,因此我将举一个我想做的简单例子。我的数据在结构上类似于以下内容: 如果我有两种特定颜色的ID,我想创建一个查询以返回类型。例如,我想查找所有具有蓝色和红色的ID。然后查询将返回: A和B的返回顺序并不重要。数据集很大,我希望有许多ID可以同时满足这两个条件(也许是50,000个左右)。我要指出