UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
需要注意的是:
1、UNION 内部的 SELECT 语句必须拥有相同数量的列;
2、列也必须拥有相同的数据类型;
3、每条 SELECT 语句中的列的顺序必须相同;
4、UNION 操作符默认选取不同的值。如果允许重复的值,请使用 UNION ALL;
以上是UNION的语法要求;
言归正传,怎样才能一条SQL插入多条数据呢?
场景1:直接添加多条记录
INSERT INTO (col1,col2,col3)
SELECT val1,val2,val3 UNION
SELECT val1,val2,val3 UNION
SELECT val1,val2,val3 UNION
SELECT val1,val2,val3 ;
场景2:从其他的多张表中读取数据添加到新表中
INSERT tableName(col1,col2,col3)
SELECT a,b,c FROM table1 WHERE a=1
UNION ALL
SELECT a,b,c FROM table2 WHERE a=2;
// 数据来源于单表的话,那就不需要UNION了
INSERT tableName(col1,col2,col3)
SELECT a,b,c FROM table2;
批量插入数据的话,建议可以使用UNION插入数据,效率更高,因为节约大部分数据库连接和关闭的时间,具体一次插入多少条更为合适,这需要取决于服务器实际环境;如果不想费劲的话,就一次插入10条得了,肯定比一条一条插入效率要高很多;