我想使用select进行插入,然后从子查询中为每个返回值插入多行,例如
INSERT INTO t1 (column1, column2, column3)
SELECT column1_value,5,10 FROM t2;
将为每行向第2列插入5,在第3列为每行插入10。无论如何我可以在这里传递多个值以获得第2列中的5行和从t2中选择获得的每个记录7的另一行吗?
答案 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