我一直在寻找并找不到这个问题的答案:
我使用嵌套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 ......
非常感谢任何帮助
答案 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
也不是必需的