我有一个包含列的表:
[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]
提前致谢
答案 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
用简单的英语:
警告:根据MySQL documentation,REPLACE实际上会在重新插入之前删除重复的行(而不仅仅是更新已修改的字段),这在出现外键时会出现问题。
(不确定SQLite,但我猜你可以采用类似的一般想法。)