我是这个论坛的新手,正在学习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的工具。
答案 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列中。如果找到该解决方案,则将其发布在这里。