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

标签 mysql sql postgresql

我想将数据插入表中,其中一列由选择查询填充。这是我的 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 将从基于 JOINmem 表中获取group 表。

当我执行这条语句时,出现错误:

More than one row returned by a subquery used as an expression

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

更新

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

最佳答案

您可以将其改写为 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 子句的情况下该插入是否有意义。您几乎对每个成员的每个字段都进行了硬编码。

关于mysql - 使用 SELECT 和 JOIN 语句将多个数据插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695066/

相关文章:

php - 在 pure-ftpd 中使用 PHP 的 password_hash

SQL Server 2008日志不会截断

android - 在 SQLite 数据库中加入 3 个表

xml - Postgres XML XPath 返回无效的 XPath 表达式

database - 在 PostgreSQL 数据库中复制 NULL

每次我执行查询时,MySQL 注入(inject) : If I use a function that replaces\, <, >, ', "及其 HTML 代码,它是防弹的吗?

mysql - Yii - 创建临时表并在下一个查询中使用它会产生一般错误 : 2014 Cannot execute queries while other unbuffered queries are active

应用自定义自动增量时,Mysql 多重联接表插入将不起作用

SQL Server - boolean 文字?

postgresql - 使用 postgis 在 postgreSQL 上请求错误(返回多行)