选择添加了升序的临时列

时间:2018-08-15 05:38:28

标签: mysql select auto-increment temporary

我是这个论坛的新手,正在学习MYSQL。

我正在创建一个NBA球员数据库,并且已经在表nba_players中添加了大约540个球员记录。当插入记录时,nba_players.player_id列设置为auto_increment,但从531开始递增,在1000处结束。与其截断整个表并重新应用INSERT语句,不如尝试其他解决方案。

我正在使用Workbench 8.0,所以我通过工作台用户界面使用了查询语言和表操作的组合。

因此,我正在研究的替代解决方案是使用SELECT语句创建一个临时列,以调出一个值为2到540的临时列。然后,我将复制整个列,然后使用工作台以正确的方式粘贴行点击“粘贴行”进入新的SELECT查询:

SELECT player_id FROM nba_players

我尝试将SELECT 2:540用作temp_column。请别笑,我正在努力使自己更流利;)

我怀疑这可以通过UPDATE命令来完成,但是就像我说的那样,我想追求这一解决方案,以便为我的武器库添加更多使用MYSQL的工具。

2 个答案:

答案 0 :(得分:0)

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

  set @myid:=0;

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

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

答案 1 :(得分:0)

关于如何在MySQL中创建一个具有一列且递归值介于1到540之间的临时表的问题是使用递归CTE或递归通用表表达式。具体查询如下:

递归cte_count(n) 作为(         选择1         全部合并         选择n + 1         来自cte_count         其中n <540     ) 选择n 来自cte_count;

现在也许有一条更新语句可以将结果添加到player_id列中。如果找到该解决方案,则将其发布在这里。