当一列是变量值时,如何在Postgresql 8.4中插入行?

Huu*_*uze 2 sql postgresql insert

我想在"作者"表中为每个作者的"书籍"表中插入记录.换句话说,如果这代表作者表:

> 1 - "Herman Melville" 
> 2 - "Stephen King" 
> 3 - "Truman Capote"
Run Code Online (Sandbox Code Playgroud)

...然后,插入将在"book"表中产生这些结果:

> 'Hello World' - 1
> 'Hello World' - 2
> 'Hello World' - 3
Run Code Online (Sandbox Code Playgroud)

我有以下INSERT语句(它实际上是一个粗略的例子,但它证明了目标):

INSERT INTO books (title, author_id) VALUES ('Hello World', SELECT id FROM author);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这失败了,我不确定如何从"作者"表中获取每个"id"值.

DNS*_*DNS 9

目前尚不清楚为什么要为每个作者插入相同的条目,但是您可以使用SELECT作为INSERT的源,如下所示:

INSERT INTO books (title, author_id)
    SELECT 'Hello World', id
    FROM author
Run Code Online (Sandbox Code Playgroud)

编辑:有关更多信息,请查看INSERT 的文档 ; 如您所见,源可以是DEFAULT VALUES,VALUES或查询.