从一个表中获取一组ID,并使用它们在不同的表中生成一行

时间:2015-12-24 15:08:23

标签: sql postgresql

我有2个表'用户'和'设置'。我正在尝试在用户的每个用户的设置中创建一个新行来初始化默认设置。

INSERT INTO settings
    (user_id, setting_id, value)
VALUES 
    (
        (SELECT id
        FROM users),
        16,
        true
    )

这会返回错误

  

错误:用作表达式的子查询返回多行   SQL状态:21000

2 个答案:

答案 0 :(得分:1)

试试这种语法。

常量值添加到select查询选择列表

INSERT INTO settings
    (user_id, setting_id, value)
SELECT id,16,true
FROM users

答案 1 :(得分:1)

使用insert . . . select

INSERT INTO settings (user_id, setting_id, value)
    SELECT id, 16, true
    FROM users;