假设我有这个表(为简单起见,只有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"
...
“创建”值或全部相同的原因是因为我刚刚将列添加到我的表中,现在我想确保我的条目将根据时间戳正确排序,我将在稍后添加新条目我的桌子。
如何使用id
?
update t
set created = created + (id - 1) * interval '1 second';
如果id
s有空隙,你可以使用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;