如何使用另一個表中的 MAX 值重置 MySQL 自動遞增?


您可以使用預處理語句來使用另一個表中的 MAX 值重置 MySQL 自動遞增。

以下是語法:

set @anyVariableName1=(select MAX(yourColumnName) from yourTableName1);
SET @anyVariableName2 = CONCAT('ALTER TABLE yourTableName2
AUTO_INCREMENT=', @anyVariableName1);
PREPARE yourStatementName FROM @anyVariableName2;
execute yourStatementName;

以上語法將使用另一個表中的最大值重置 MySQL auto_increment。為了理解以上語法,讓我們建立兩個表。第一個表將包含記錄,第二個表將使用第一個表中的最大值並將其用於自動遞增屬性。

建立表的查詢如下:

mysql> create table FirstTableMaxValue
   -> (
   -> MaxNumber int
   -> );
Query OK, 0 rows affected (0.64 sec)

使用 insert 命令從表中插入記錄。查詢如下:

mysql> insert into FirstTableMaxValue values(100);
Query OK, 1 row affected (0.15 sec)

mysql> insert into FirstTableMaxValue values(1000);
Query OK, 1 row affected (0.19 sec)

mysql> insert into FirstTableMaxValue values(2000);
Query OK, 1 row affected (0.12 sec)

mysql> insert into FirstTableMaxValue values(90);
Query OK, 1 row affected (0.15 sec)

mysql> insert into FirstTableMaxValue values(2500);
Query OK, 1 row affected (0.17 sec)

mysql> insert into FirstTableMaxValue values(2300);
Query OK, 1 row affected (0.12 sec)

使用 select 語句顯示錶中的所有記錄。

查詢如下:

mysql> select *from FirstTableMaxValue;

輸出

+-----------+
| MaxNumber |
+-----------+
|       100 |
|      1000 |
|      2000 |
|        90 |
|      2500 |
|      2300 |
+-----------+
6 rows in set (0.05 sec)

現在您可以建立一個第二個表。建立第二個表的查詢如下:

mysql> create table AutoIncrementWithMaxValueFromTable
   -> (
   -> ProductId int not null auto_increment,
   -> Primary key(ProductId)
   -> );
Query OK, 0 rows affected (1.01 sec)

在這裡,我將包含一個語句,該語句將獲取第一個表中的最大值並將最大值設定為第二個表的自動遞增屬性。查詢如下:

mysql> set @v=(select MAX(MaxNumber) from FirstTableMaxValue);
Query OK, 0 rows affected (0.00 sec)

mysql> SET @Value2 = CONCAT('ALTER TABLE AutoIncrementWithMaxValueFromTable
AUTO_INCREMENT=', @v);
Query OK, 0 rows affected (0.00 sec)

mysql> PREPARE myStatement FROM @value2;
Query OK, 0 rows affected (0.29 sec)
Statement prepared

mysql> execute myStatement;
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0

現在我們已將第一個表中的最大值 2500 新增到第二個表中。現在您可以向表中插入記錄,這些記錄將從 2500、2501 等開始。

向第二個表中插入記錄的查詢如下:

mysql> insert into AutoIncrementWithMaxValueFromTable values();
Query OK, 1 row affected (0.24 sec)

mysql> insert into AutoIncrementWithMaxValueFromTable values();
Query OK, 1 row affected (0.10 sec)

使用 select 命令檢查表中的所有記錄。查詢如下:

mysql> select *from AutoIncrementWithMaxValueFromTable;

輸出

+-----------+
| ProductId |
+-----------+
|      2500 |
|      2501 |
+-----------+
2 rows in set (0.00 sec)

更新於: 2019-07-30

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告