【问题标题】:How do I insert multiple rows with a subquery as one of the value?如何插入带有子查询的多行作为值之一?
【发布时间】:2018-12-05 00:59:36
【问题描述】:

我正在尝试向表中插入多行,其中一列的值来自另一个查询。但是我收到以下错误

用作表达式的子查询返回多于一行

我应该怎么做?

INSERT INTO 
   accounts_account_preferences (account_id, preference_id) 
VALUES 
   ((SELECT account_id 
     FROM accounts_account_preferences 
     WHERE preference_id = 1), 2);

【问题讨论】:

  • 单独运行(SELECT account_id FROM accounts_account_preferences WHERE preference_id = 1)查询会得到什么输出。
  • 我得到一个 account_ids 列表
  • 这就是你得到错误的原因。查询应该返回准确的一个结果。您是否希望插入所有帐户 ID,并且将所有这些 ID 设置为 2?这意味着您想要插入多行?
  • 你应该显示示例数据..
  • 是的,我想插入所有返回的 account_ids,preference_id = 2

标签: sql postgresql sql-insert


【解决方案1】:

使用INSERT ... SELECT ... 而不使用VALUES

INSERT INTO accounts_account_preferences (account_id, preference_id) 
SELECT account_id, 2 
FROM accounts_account_preferences 
WHERE preference_id = 1

【讨论】:

    【解决方案2】:

    您的内部查询应返回每外部行 1 条记录。如果它返回多条记录,那么它将不起作用。

    【讨论】:

    • 欢迎来到 Stack Overflow!解释为什么尝试失败是可以的,但您还需要提供原始问题的实际解决方案
    猜你喜欢
    • 2012-03-14
    • 2017-05-29
    • 2021-01-18
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多