将字段号替换为其在表sql、mysql中的行位置

jucafojl  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(338)

我有posts表,其中id\u post是主键&自动递增

id_post  | post
  1        hi1
  3        hi3
  27       hi27
  45       hi45
  67       hi67
  69       hi69

我想更新一下 id_post 以获取其在表中的行位置

id_post  | post
  1        hi1
  2        hi3
  3       hi27
  4       hi45
  5       hi67
  6       hi69

怎么可能呢?
我在想用 ROW_NUMBER()

w8biq8rn

w8biq8rn1#

您可以使用下面的设置操作:

before 
+--------+--------+
|id_post | itemID | 
+--------+--------+
|  1     |    hi1 |
|  3     |   hi3  |
|  27    |   hi27 |
|  45    |   hi45 |
|  67    |   hi67 |
|  69    |   hi69 |
+--------+--------+

after
--------------------

mysql> SET @nbr=0;
Query OK, 0 rows affected (0.00 sec)

mysql> update posts set id=@nbr:=@nbr+1 

+--------+--------+
|id_post | post   | 
+--------+--------+
|  1     |    hi1 |
|  2     |   hi3  |
|  3     |   hi27 |
|  4     |   hi45 |
|  5     |   hi67 |
|  6     |   hi69 |
+--------+--------+
6 rows in set (0.00 sec)
tp5buhyn

tp5buhyn2#

运行以下命令:

SET @x = 0;
ALTER TABLE `posts` AUTO_INCREMENT = 1;
UPDATE `posts` SET `id_post` = @x:= @x + 1;

相关问题