我想将数据插入表中,其中一列由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语句。
答案 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
子句的情况下确定此插入是否有意义。你很难对每个成员的每个领域进行编码。