首页 > 解决方案 > 如何在 MySQL 中填充从 400000 开始的新列

问题描述

我正在为大学做作业,我需要为新创建的列设置值,但它必须从特定数字开始,在本例中为 40000000,所以它将是这样的:

ID ║ Column to populate ║ FirstName ║ LastName ║
1     40000000             John        Smith
2     40000001             John        Walker
3     40000002             John        Locke
and etc...

我想这与以下查询有关:

更新[table_name] SET [column_name] = [column_name] + 1;

但这显然不会从我想要的数字开始。

也许这是一个愚蠢的问题,但我用谷歌搜索了它,我找不到任何与我需要的东西相关的东西,所以非常感谢任何帮助。谢谢!!!

标签: mysqlsqlsql-updatemariadb

解决方案


这是使用窗口函数的一种选择:

update mytable t
inner join (
    select id, row_number() over(order by id) rn
    from mytable t1
) t1 on t1.id = t.id
set t.new_col = 3999 + t1.rn

以防万一:如果id开始1并没有间隙地递增,那么它就更简单了:

update mytable set new_col = 3999 + id

不过,我认为这并不安全:id看起来像一auto_increment列,而这样的列并不能保证没有间隙。


推荐阅读