选择添加升序值的临时列

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

我是新来这个论坛,我正在学习mysql。
我正在创建一个nba球员的数据库,我已经把大约540个球员的记录添加到了nba球员的表格中。当记录被插入时,nba_players.player_id列被设置为auto_increment,但它从531开始递增,到1000左右结束。与其截短整个表并重新应用insert语句,我想尝试一种不同的解决方案。
我使用的是workbench 8.0,因此通过workbench用户界面使用查询语言和表操作的组合。
因此,我正在研究的另一种解决方案是使用select语句创建一个临时列,以显示一个值为2到540的临时列。然后,我将复制整个列,然后使用workbench将行粘贴到一个新的select查询中,使用右键单击“粘贴行”:

SELECT player_id FROM nba_players

我试过选择2:540作为临时列。请不要笑哈哈,我正在努力变得更流利;)
我怀疑这可以通过update命令来完成,但正如我所说的,我希望采用这个解决方案,在我的软件库中添加更多使用mysql的工具。

vtwuwzda

vtwuwzda1#

如何在mysql中创建一个具有递归值1到540的列的临时表的问题是使用递归cte或递归公共表表达式。具体查询如下:
使用递归cte\U计数(n)作为(选择1个并集全部从cte\U计数中选择n+1,其中n<540)从cte\U计数中选择n;
现在可能有一个update语句可以将结果添加到player\ id列中。如果我找到了解决办法,我会把它贴在这里。

m2xkgtsf

m2xkgtsf2#

如果您的表(有535个玩家)的值不在1到539之间,并且没有使用外键重新保存到其他表中,您可以尝试使用var和update

set @myid:=0;

  update 
    nba_players
    set player_id =@myid:=@myid+1
    order by player_id;

否则,您可以在有效范围内执行相同的操作(例如:@myid=10000),将id移出范围,然后重复命令strating form 0

相关问题