如何使用select子查询返回多个列来执行插入选择

时间:2019-07-12 08:09:09

标签: sql postgresql

我想在表中插入一些值,然后剩余的值应该来自Postgres中的select子查询,我被困住了,我还需要在其他地方重用代码 请帮帮我。 我遇到了subquery must return only one column错误。我想返回三列电子邮件,姓名,地址

INSERT INTO
    books
      VALUES 
      ( 1, 2, 3, (SELECT email, name, address FROM users WHERE userID=1)) RETURNING *;

2 个答案:

答案 0 :(得分:2)

如果您的INSERT源是SELECT,请不要使用VALUES子句:

INSERT INTO books
SELECT 1,2,3,email, name, address 
FROM users 
WHERE userID=1
RETURNING *;

请注意,明确列出目标表的列是一种很好的编码风格:insert into books (col1, col2, col3, ...)

答案 1 :(得分:-4)

SELECT `email` as f FROM users WHERE userID=1
union SELECT `name` as f FROM users WHERE userID=1
union SELECT `address` as f FROM users WHERE userID=1