当前位置: 首页 > 面试题库 >

如何使用另一个表的MAX值重置MySQL自动增量?

丌官招
2023-03-14
问题内容

我知道这是行不通的,以各种形式尝试过并且一直失败。实现以下结果的最简单方法是什么?

ALTER TABLE XYZ AUTO_INCREMENT = (select max(ID) from ABC);

这对于自动化项目非常有用。谢谢!

SELECT @max := (max(ID)+1) from ABC;        -> This works!
select ID from ABC where ID = (@max-1);     -> This works!
ALTER TABLE XYZ AUTO_INCREMENT = (@max+1);  -> This fails :( Why?

问题答案:

使用准备好的语句:

  SELECT @max := MAX(ID)+ 1 FROM ABC;

  PREPARE stmt FROM 'ALTER TABLE ABC AUTO_INCREMENT = ?';
  EXECUTE stmt USING @max;

  DEALLOCATE PREPARE stmt;


 类似资料:
  • MySQL中有两个表,如下所示: 请注意,category_id是类别表中category_key的FOREIGN KEY 我想在第三个表(名为“catalog”)中插入目录项,这样每个目录ID都将从其类别和子类别ID生成,每个类别子类别ID的串联编号都会自动递增。 例如: 假设“categories”表中有一行的categories_键为“ABC”,而“sub_categories”表中也有一行

  • 问题内容: 这是MySQL 5.3.X + db中的表: id 列从未在查询中使用,只是为了视觉方便(因此很容易看到表的增长方式)。 Memberid 是一个实际键,是唯一的,并且在查询中使用 memberid 来标识任何成员(WHERE memberid =’abcde’)。 我的问题是:如何保留auto_increment,但将memberid作为主键?那可能吗?当我尝试使用 PRIMARY

  • 例如,我有一个包含2个表的数据库。第一个表(表 1)包含: userId 是我的主键,它是自动递增的。我的下一个表(表2)有: userId(来自表2)是我引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并使表2中的用户ID自动从表1中获取它引用的主键?或者,我必须为每个表执行多个插入,并显式地使外键具有相同的值。

  • 问题内容: 我正在尝试建立一个脚本以在数据库中生成一组特定的测试数据,在该脚本的开头,我想清除有关表而不删除约束(因为测试数据不是重建约束的适当位置)并为每个表重置AUTO_INCREMENT,因为如果可以硬编码许多ID,则设置测试数据要简单得多。 例如,我有两个这样的语句(几乎每个表都有一对): 并且在删除记录时,即使我能找到的所有文档和SO回答都表明这应该可行,但auto-increment值

  • 问题内容: 我正在尝试在mysql数据库中创建一列,该列自动递增1但从0-Z开始然后滚动。 例如000、001、002,…,009、00A,00B,…,00Z,010,…,0ZZ,…,100。 我想让数据库通过自动递增字段创建列。 我的想法是: 为从0到36的每个字符创建一列,然后将行N(其中N是最低有效数字)自动递增1。然后在每列上添加触发器,以在第N列达到36时向N-1列添加1 。 创建一个包

  • 问题内容: 是否可以在带有子选择的mysql 5.0上运行UPDATE命令。 我要运行的命令是这样的: ISBN13当前存储为字符串。 这应该更新10k +行。 谢谢, 威廉 问题答案: 只需更改一下即可: