【问题标题】:Inserting multiple rows per subquery in mysql在mysql中为每个子查询插入多行
【发布时间】:2016-09-23 16:38:12
【问题描述】:

例如,我想使用 select 进行插入,然后从子查询中为每个返回值插入多行

INSERT INTO t1 (column1, column2, column3)
SELECT column1_value,5,10 FROM t2;

将每行插入 5 个到第 2 列,为第 3 列插入每行 10 个。无论如何,我可以在这里传递多个值以在第 2 列中获得一行 5 和从 t2 中选择获得的每条记录 7 的另一行?

【问题讨论】:

  • 解释你需要的多值逻辑..显示一个适当的数据样本

标签: mysql nested subquery


【解决方案1】:

使用UNION

INSERT INTO t1 (column1, column2, column3)
SELECT column1_value, 5, 10 FROM t2
UNION ALL
SELECT column1_value, 5, 7 FROM t2

您也可以通过UNION 加入

INSERT INTO t1 (column1, column2, column3)
SELECT t2.column1_value, 5, t3.column3_value
FROM t2
CROSS JOIN (SELECT 10 AS column3_value
            UNION
            SELECT 7 AS column3_value) AS t3

【讨论】:

    【解决方案2】:

    有很多方法可以插入“这个或那个”。 Barmar 列举了两个例子,但也有 IF、IFNULL、NULLIF 和 CASE:

    http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      相关资源
      最近更新 更多