2017-06-25 31 views
0

にネストされたselectとNEXTVALを挿入します。 Postgresqlの:私は求め、この問題への答えを見つけることができますシーケンス

私が選択ネストされた使用して行を挿入するだけでなく、uidのシーケンスを必要と日付スタンプ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 

私は次のエラーを取得する:

ERROR: syntax error at or near "(" LINE 2: ...jtbdn.countdegreeid, j.id, j.uniquejobid) NEXTVAL('hibernat...

すべてのヘルプ

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

あなたは括弧で列を囲むとき、あなたはレコード形式をしたいのPostgresを言っている:多くの

答えて

1

は括弧を削除し、コンマを追加してみてくださいいただければ幸いです。したがって、これらは同じではありません:

select 1, 2 
select (1, 2) 

最初の2つの列を返します。 2番目の列は1つの列を返します。この列は2つのフィールドを持つレコードです。私はあなたのテーブルの列のいずれかが実際にレコードだとは思わない。

待機。その挿入物は完全な意味を持たない。 6列を挿入していますが、insertリストには5つしかありません。あなたは本当に何をしたいですか?

+0

を必要とされていません

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

以下のようにして、NEXTVAL,が欠落しています。そこには "id"があるはずです – Jake

+0

は正しく編集されました – Jake

1

またselectのものカッコ()がタイプミスだった

+1

実際にはかっこは「必須ではない」だけでなく、間違っています。 '(cjtbdn.countdegreeid、j.id、j.uniquejobid)'は**単一**列(3つのフィールドを持つレコード)です。 'cjtbdn.countdegreeid、j.id、j.uniquejobid'は3つの列です。 –

関連する問題