mysql中间行删除并按安排顺序修复主键

时间:2018-10-18 09:10:10

标签: mysql sql

我有一个ID为ID的表,该表是通过插入20个数据激活的主键。我已经删除了第15、16、17行,以及如何安排从1到17的升序

   CREATE TABLE `cart` (
    `id` int(255) NOT NULL,
    `productname` varchar(255) NOT NULL,
    `productquantity` varchar(255) NOT NULL,
    `productsize` varchar(255) NOT NULL,
    `productprice` varchar(255) NOT NULL

1 个答案:

答案 0 :(得分:1)

  • id的递增顺序确定每行的行号,从派生表中的1开始。
  • 将此派生表与主表连接起来,并将id值更新为等于row_number。这会将所有id值重置为从1开始(无间隔)。

尝试(适用于所有MySQL版本):

UPDATE your_table AS t1 
JOIN  
(
  SELECT @row_no := @row_no + 1 AS row_num, 
         id  
  FROM your_table
  JOIN (SELECT @row_no := 0) AS init 
  ORDER BY id 
) AS dt ON dt.id = t1.id  
SET t1.id = dt.row_num;

DB Fiddle DEMO