Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да нулирам поредните номера, за да станат последователни?

Ако полето е вашият първичен ключ...

...тогава, както е посочено другаде по този въпрос, не трябва да променяте идентификатори. Идентификаторите вече са уникални и нито трябва, нито искате да ги използвате повторно.

Това каза...

В противен случай...

Напълно възможно е да имате различен поле (тоест, както и PK) за някаква подредба, дефинирана от приложението. Докато това подреждане не е присъщо на някое друго поле (например, ако е дефинирано от потребителя), няма нищо лошо в това.

Можете да пресъздадете таблицата с помощта на (временен) auto_increment поле и след това премахнете auto_increment след това.

Бих се изкушил да UPDATE във възходящ ред и приложете нарастваща променлива.

SET @i = 0;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 ORDER BY `myOrderCol` ASC;

Изглежда доста разточително да правите това всеки път изтривате елементи, но за съжаление с този подход за ръчно подреждане не можете да направите много по въпроса, ако искате да запазите целостта на колоната.

Възможно е да намалите натоварването, така че след изтриване на записа с myOrderCol равно на, да речем, 5 :

SET @i = 5;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 WHERE `myOrderCol` > 5
 ORDER BY `myOrderCol` ASC;

Това ще "размеси" всички следните стойности надолу с една.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да наложите char(N) тип данни вместо varchar(N) в полето на модела на django

  2. Получаване на общия брой редове при използване на LIMIT?

  3. Как да покажете съпоставянето на вашата връзка в MySQL

  4. Разрешения за MySQL Съхранена процедура

  5. Как да проверите дали потребителското име вече съществува с PHP/MYSQL