📜  mysql根据select插入多行 - SQL(1)

📅  最后修改于: 2023-12-03 14:44:31.952000             🧑  作者: Mango

MySQL根据SELECT插入多行

在MySQL中,我们通常会使用INSERT语句向数据库中的表格中插入数据。但是,如果我们想要根据SELECT语句的结果向表格中插入多行数据,该如何操作呢?

方法一:使用INSERT语句嵌入SELECT语句

我们可以使用INSERT INTO SELECT语句来实现根据SELECT语句插入多行数据的操作。具体来说,我们可以按照如下的格式编写SQL语句:

INSERT INTO 表名(字段1, 字段2, ...)
SELECT 字段1, 字段2, ...
FROM 来源表名
WHERE 条件语句;

例如,我们有一个students表格,其中包含有id、name、age和gender四个字段。现在,我们想要根据其他表格中的数据向students表格中插入多行数据,可以按照如下的方式编写SQL语句:

INSERT INTO students (name, age, gender)
SELECT name, age, gender
FROM other_table
WHERE condition;

其中,other_table是包含有name、age和gender字段的其他表格,condition是过滤条件。这样一来,根据SELECT语句的结果,我们就可以将多行数据插入到students表格中了。

方法二:使用UNION ALL语句

除了INSERT INTO SELECT语句之外,我们还可以使用UNION ALL语句来实现根据SELECT语句插入多行数据的操作。具体来说,我们可以按照如下的格式编写SQL语句:

INSERT INTO 表名(字段1, 字段2, ...)
SELECT 字段1, 字段2, ...
FROM 来源表名
WHERE 条件1

UNION ALL

SELECT 字段1, 字段2, ...
FROM 来源表名
WHERE 条件2

UNION ALL

...

例如,我们有一个students表格,其中包含有id、name、age和gender四个字段。现在,我们想要根据其他表格中的数据向students表格中插入多行数据,可以按照如下的方式编写SQL语句:

INSERT INTO students (name, age, gender)
SELECT name, age, gender
FROM other_table1
WHERE condition1

UNION ALL

SELECT name, age, gender
FROM other_table2
WHERE condition2;

其中,other_table1和other_table2是包含有name、age和gender字段的其他表格,condition1和condition2是过滤条件。这样一来,根据SELECT语句的结果,我们就可以将多行数据插入到students表格中了。

总结

以上就是使用MySQL根据SELECT插入多行数据的两种方法,它们都可以帮助我们在实际的开发中更加高效地操作数据库。值得注意的是,在使用这些语句的时候,我们需要仔细考虑数据的来源和过滤条件,以避免出现数据重复或者不符合业务要求的情况。