在postgresql中填写连续数字的列

时间:2017-05-16 13:31:26

标签: sql postgresql

我有一个表t1,其中我想从CSV文件中放入一些数据。 为此,我创建了第二个表t2,它类似于t1,但它是空的,并且不包含任何约束(pkey已删除)。

t1.locust_idprimary key t1的自动增量,但其类型为integer,因此当我想将日期从t2复制到{{}时1}}我必须在t1脚本中提到id,这里是我使用的SQL表达式,但是效果不好:

insert

INSERT INTO public.t1( locust_id, day, month, year, latitude, longitude) select max(t1.locust_id)+1, t2.day, t2.month, t2.year, t2.latitude, t2.longitude from public.t1, public.t2; 的定义是:

t1

1 个答案:

答案 0 :(得分:1)

我并不完全清楚id列的定义是什么,但是如果你想增加在目标表中最高数字之后开始的数字,你可以使用这样的东西:

INSERT INTO public.t1(locust_id, day, month, year, latitude, longitude)
select (select max(t1.locust_id) from t1) + row_number() over (), 
       t2.day, 
       t2.month, 
       t2.year, 
       t2.latitude, 
       t2.longitude 
from public.t2;

请注意,使用from public.t1, public.t2的原始查询会在两个表之间创建交叉连接(笛卡尔积)。绝对是你想要的东西。