比如表test中有如下值ID Name Password
8 Lucy 123
9 Lily 123
11 Jack 123
12 Jim 123
13 HanMeiMei 123第一个问题:前面的序号1-7无值,现在我想把以上的序号全减7变成1、2、4、5、6,怎么做?
第二个问题:同样减7,但我想它们连续,变成1、2、3、4、5(这个问题可能有点难,可以不回答)我试过了 update test set "ID"="ID"-1;正常在未修改的情况下没问题,可是若我修改了ID=8的那条,查出来的时候它就会排到最后,当执行上面那一句的时候就会提示错误:
ERROR: duplicate key value violates unique constraint "test_pkey"
描述: Key ("ID")=(7) already exists.说这条已经存在。我用的数据库是PostgreSQL,它有一个很奇怪的现象,就是最新修改的排在最后,本来可以用order by的,可是我放了很多地方都会报错不执行!求高人路过。数据库sql语句序号减固定值
8 Lucy 123
9 Lily 123
11 Jack 123
12 Jim 123
13 HanMeiMei 123第一个问题:前面的序号1-7无值,现在我想把以上的序号全减7变成1、2、4、5、6,怎么做?
第二个问题:同样减7,但我想它们连续,变成1、2、3、4、5(这个问题可能有点难,可以不回答)我试过了 update test set "ID"="ID"-1;正常在未修改的情况下没问题,可是若我修改了ID=8的那条,查出来的时候它就会排到最后,当执行上面那一句的时候就会提示错误:
ERROR: duplicate key value violates unique constraint "test_pkey"
描述: Key ("ID")=(7) already exists.说这条已经存在。我用的数据库是PostgreSQL,它有一个很奇怪的现象,就是最新修改的排在最后,本来可以用order by的,可是我放了很多地方都会报错不执行!求高人路过。数据库sql语句序号减固定值
update tb set ID=ID-7;第二个问题:同样减7,但我想它们连续,变成1、2、3、4、5(这个问题可能有点难,可以不回答)
建一个同样结构的表 将数据导入 insert into newtable select * from oldtables;然后drop table oldtable;alter table newtable rename oldtable;
#select * from test; ID | Name | Password
----+-----------+---------
6 | Lily | 123
8 | Jack | 123
9 | Jim | 123
10 | HanMeiMei | 123
5 | Lucy | 12345
(5 行记录)然后再执行
# update test set "ID"="ID"-1;
的时候就出错了:
ERROR: duplicate key value violates unique constraint "test_pkey"
描述: Key ("ID")=(5) already exists.我发现一个问题,那就是postgresql每次更新一个条目后,它都会排到最后,打乱以前的顺序,求指教!
update test set ID=ID-1 oder by id desc
ERROR: syntax error at or near "order"
第1行update test set "ID"="ID"-1 order by id desc;# update test set "ID"="ID"-1 order by id;
ERROR: syntax error at or near "order"
第1行update test set "ID"="ID"-1 order by id;
update test set test=test-7;
alter table test add constraint test_pkey primary key (ID);
如果你的ID是自增长列 就算update成1 2 3 4 5又怎样呢,下一条记录插入时,序号是11,不是6,还要研究如何重置