我有一个表t1
,其中我想从CSV文件中放入一些数据。
为此,我创建了第二个表t2
,它类似于t1
,但它是空的,并且不包含任何约束(pkey
已删除)。
t1.locust_id
是primary 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
答案 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
的原始查询会在两个表之间创建交叉连接(笛卡尔积)。绝对是不你想要的东西。