Postgresql:按顺序插入嵌套选择和NEXTVAL

时间:2017-06-25 19:23:19

标签: sql postgresql

我一直在寻找并找不到这个问题的答案:

我使用嵌套select插入一行,但也需要uid序列和datestamp

SQL插入

 insert into countdegreejob   (countdegreeid,jobid,uniquejobid,  id, created, updated) 

 select (cjtbdn.countdegreeid, j.id, j.uniquejobid ) NEXTVAL('hibernate_sequence'), now(), now()
 from job j 

 right join job_areasofstudy jd on j.id = jd.job_id

 inner join countjobtitlebydegreename cjtbdn on j.uniquejobid=cjtbdn.uniquejobid 

 where cjtbdn.degreename = jd.areasofstudy and jd.job_id is not NULL 

我收到以下错误:

  

错误:语法错误在或附近“(”   第2行:... jtbdn.countdegreeid,j.id,j.uniquejobid)NEXTVAL('hibernat ......

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

尝试删除括号并添加逗号:

select cjtbdn.countdegreeid, j.id, j.uniquejobid, NEXTVAL('hibernate_sequence'), now(), now()

当您将列括在括号中时,您告诉Postgres您想要一种记录格式。所以,这些不一样:

select 1, 2
select (1, 2)

第一个返回两列。第二个返回一列,恰好是一个包含两个字段的记录。我怀疑表中的任何列都是实际记录。

等待。那个插入没有充分意义。您正在插入6列但在insert列表中只有5列。你真的想做什么?

答案 1 :(得分:1)

您在,之前错过NEXTVAL,如下所示

select (cjtbdn.countdegreeid, j.id, j.uniquejobid )  NEXTVAL('hibernate_sequence'),
                                                   ^..... Here

()中的括号select也不是必需的