MySQL - 如何修復由於刪除行導致的自增欄位從 1,2,3,4,5 變為 1,3,5。現在我們希望它變成 1,2,3


首先讓我們建立一個表 -

mysql> create table DemoTable1955
   (
   UserId int NOT NULL AUTO_INCREMENT
   ,
   PRIMARY KEY(UserId)
   );
Query OK, 0 rows affected (0.00 sec)

使用 insert 命令在表中插入一些記錄 -

mysql> insert into DemoTable1955 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1955 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1955 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1955 values();
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1955 values();
Query OK, 1 row affected (0.00 sec)

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

mysql> select * from DemoTable1955;

這將產生以下輸出 -

+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
|      4 |
|      5 |
+--------+
5 rows in set (0.00 sec)

以下是從表中刪除行的查詢 -

mysql> delete from DemoTable1955 where UserId  IN(2,4);
Query OK, 2 rows affected (0.00 sec)

現在檢查表記錄 -

mysql> select * from DemoTable1955;

這將產生以下輸出 -

+--------+
| UserId |
+--------+
|      1 |
|      3 |
|      5 |
+--------+
3 rows in set (0.00 sec)

以下是修復自增欄位(從 1,2,3,4,5 變為 1,3,5)的查詢。下面的查詢將使列從 1 開始,類似於 1,2,3 -

mysql> update DemoTable1955
   set UserId = (@increment_value := @increment_value+ 1)
   order by UserId;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 3  Changed: 2 Warnings: 0

讓我們再次檢查表記錄 -

mysql> select * from DemoTable1955;

這將產生以下輸出 -

+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set (0.00 sec)

更新於: 2019-12-31

526 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.