在mysql

时间:2016-09-23 16:38:13

标签: mysql nested subquery

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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