使用SELECT和JOIN语句将多个数据插入表中

时间:2018-06-05 08:00:53

标签: mysql sql postgresql

我想将数据插入表中,其中一列由select查询填充。这是我的SQL语句:

INSERT INTO books ( gid, type, membernumber,  changedate, user)
  VALUES( '2b4493e8-cae8-4624-8177-fcc96553c5be',
          2,
          (SELECT member FROM mem m JOIN group g ON m.uid = g.sgroup),
          TIMESTAMP '2017-01-03 00:00:00.000',
          'mark'
        );

我想要实现的是每个插入,membernumber将从mem表格基于JOIN表格中的group表格获取。

当我执行此语句时,我收到错误:

  

用作表达式

的子查询返回的多行

因此,例如,如果连接将生成20行,则将插入20条记录,每个member值替换插入中的membernumber为20行。

更新

我还有另一个查询,其中两列必须用SELECT-JOIN语句替换。 @Tim给了我一个专栏的例子。我想要一个示例,其中两列填充了两个SELECT-JOIN语句。

1 个答案:

答案 0 :(得分:2)

您可以将其改写为INSERT INTO ... SELECT

INSERT INTO books (gid, type, membernumber, changedate, user)
SELECT
    '2b4493e8-cae8-4624-8177-fcc96553c5be',
    2,
    member,
    '2017-01-03 00:00:00.000',
    'mark'
FROM mem m
INNER JOIN `group` g
    ON m.uid = g.sgroup;

这应该可以解决您的语法错误,但现在您必须在没有WHERE子句的情况下确定此插入是否有意义。你很难对每个成员的每个领域进行编码。