Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL - Làm cách nào tôi có thể sửa trường tăng tự động với các hàng đã xóa từ 1,2,3,4,5 đến 1,3,5). Bây giờ chúng tôi muốn nó là 1,2,3

Đầu tiên chúng ta hãy tạo một bảng -

 mysql> tạo bảng DemoTable1955 (UserId int NOT NULL AUTO_INCREMENT, PRIMARY KEY (UserId)); Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) 

Chèn một số bản ghi vào bảng bằng lệnh chèn -

 mysql> insert vào DemoTable1955 giá trị (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào DemoTable1955 giá trị (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào DemoTable1955 giá trị (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1955 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1955 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây)  

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

 mysql> select * from DemoTable1955; 

Điều này sẽ tạo ra kết quả sau -

 + -------- + | UserId | + -------- + | 1 || 2 || 3 || 4 || 5 | + -------- + 5 hàng trong bộ (0,00 giây) 

Đây là truy vấn để xóa các hàng khỏi bảng -

 mysql> xóa khỏi DemoTable1955 trong đó UserId IN (2,4); Truy vấn OK, 2 hàng bị ảnh hưởng (0,00 giây) 

Bây giờ hãy kiểm tra các bản ghi bảng -

 mysql> select * from DemoTable1955; 

Điều này sẽ tạo ra kết quả sau -

 + -------- + | UserId | + -------- + | 1 || 3 || 5 | + -------- + 3 hàng trong bộ (0,00 giây) 

Đây là truy vấn để sửa trường tự động tăng đã xóa các hàng (1,2,3,4,5 đến 1,3,5). Truy vấn dưới đây sẽ làm cho cột bắt đầu từ 1 giống như 1,2,3 -

 mysql> update DemoTable1955 set UserId =(@increment_value:=@ increment_value + 1) order theo UserId; Truy vấn OK, 2 hàng bị ảnh hưởng (0,00 giây) Các hàng khớp:3 Đã thay đổi:2 Cảnh báo:0 

Hãy để chúng tôi kiểm tra các bản ghi bảng một lần nữa -

 mysql> select * from DemoTable1955; 

Điều này sẽ tạo ra kết quả sau -

 + -------- + | UserId | + -------- + | 1 || 2 || 3 | + -------- + 3 hàng trong bộ (0,00 giây)