假设我有此表(为简单起见,只有2列)
id ; created
1 ; "2018-08-18 18:46:15.111897"
2 ; "2018-08-18 18:46:15.111897"
3 ; "2018-08-18 18:46:15.111897"
4 ; "2018-08-18 18:46:15.111897"
5 ; "2018-08-18 18:46:15.111897"
6 ; "2018-08-18 18:46:15.111897"
7 ; "2018-08-18 18:46:15.111897"
8 ; "2018-08-18 18:46:15.111897"
...
我想在“创建”的每个时间戳上加上+1秒(或分钟),这样我的表就会变成
id ; created
1 ; "2018-08-18 18:46:15.111897"
2 ; "2018-08-18 18:46:16.111897"
3 ; "2018-08-18 18:46:17.111897"
4 ; "2018-08-18 18:46:18.111897"
5 ; "2018-08-18 18:46:19.111897"
6 ; "2018-08-18 18:46:20.111897"
7 ; "2018-08-18 18:46:21.111897"
8 ; "2018-08-18 18:46:22.111897"
...
之所以要“创建”值或全部相同,是因为我刚刚将列添加到了表中,现在我想确保我的条目将根据时间戳和新条目正确排序。稍后再添加到我的表格中。
答案 0 :(得分:3)
仅使用id
怎么样?
update t
set created = created + (id - 1) * interval '1 second';
如果id
之间有空格,则可以使用join
:
update t
set created = created + (seqnum - 1) * interval '1 second'
from (select t.*, row_number() over (order by id) as seqnum
from t
) tt
where tt.id = t.id;