手动自动增加列MySQL

时间:2011-10-15 11:56:12

标签: mysql sql

我有一个包含列的表:

[id,name,public_id]

实际上该表包含

[1,john,0]
[2,sara,0]
[3,jack,0]
.....

我想将第三列更改为1050,1051,1052 ....

[1,john,1050]
[2,sara,1051]
[3,jack,1052]
.....

如何进行更新?

一些注意事项:公共ID必须超过1049且必须是连续的。例如,对于100行,public_id必须是[1050 .... 1149]

提前致谢

2 个答案:

答案 0 :(得分:5)

您可以执行以下更新:

UPDATE table SET public_id = id + 1049

有了这个,您正在使用ID,并为其添加1049以获得您需要的结果

答案 1 :(得分:1)

假设您的表名是TEST_TABLE,这个MySQL语法将使用从1500开始的连续值(以及ID的顺序)更新PUBLIC_ID:

REPLACE INTO TEST_TABLE
SELECT TEST_TABLE.ID, TEST_TABLE.NAME, @ROWNUM := @ROWNUM + 1
FROM
    TEST_TABLE,
    (SELECT @rownum := 1499) R
ORDER BY ID

用简单的英语:

  • 对于每一行,在按ID排序数据时计算其顺序。将此订单称为“ROWNUM”。
  • 将ROWNUM(+起始偏移量)放回到表而不是原始PUBLIC_ID。

警告:根据MySQL documentation,REPLACE实际上会在重新插入之前删除重复的行(而不仅仅是更新已修改的字段),这在出现外键时会出现问题。

不确定SQLite,但我猜你可以采用类似的一般想法。