MySQL-使用SELECT语句插入表

时间:2020-02-23 14:41:02  来源:igfitidea点击:

在本教程中,我们将学习在MySQL中使用SELECT语句将数据插入表中。

在先前的教程中,我们学习了如何将数据插入表中以及如何从表中选择数据。
随时检查一下。

INSERT INTO ... SELECT语法

以下是使用SELECT语句将数据插入表中的语法。

INSERT INTO table_name(column_name)
SELECT tbl_name.col_name
FROM some_table tbl_name
WHERE condition;

其中" tbl_name"是表" some_table"的别名。

示例表

在本教程中,我们将使用employeeaddressprojectemployee表。

表:员工地址

mysql> SELECT * FROM employeeaddress;
+----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+
| id | employeeid | addresstype | addressline1                   | addressline2    | city      | state | country | pincode |
+----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+
|  1 | e01        | PRIMARY     | #12 street                     | Action block    | Bangalore | KA    | INDIA   | 560000  |
|  2 | e03        | PRIMARY     | Super Housing Complex Block 22 | Major Street    | Chennai   | TN    | INDIA   | 600000  |
|  3 | e03        | SECONDARY   | House #301 ABC Colony          | Jupiter Block   | Kolkata   | WB    | INDIA   | 700000  |
|  4 | e02        | PRIMARY     | Pizza Street                   | Foodies Block   | Kolkata   | WB    | INDIA   | 700000  |
|  5 | e04        | PRIMARY     | Fruits Apartment               | Fresh Block     | Bangalore | KA    | INDIA   | 560000  |
|  6 | e05        | PRIMARY     | Apartment 10                   | Fast Food Block | Chennai   | TN    | INDIA   | 600000  |
+----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+
6 rows in set (0.00 sec)

因此,表中总共有6个地址条目。

表:项目员工

mysql> SELECT * FROM projectemployee;
Empty set (0.00 sec)

" projectemployee"表目前为空,我们将使用" employeeaddress"表中的数据填充该表。

在下面的示例中,我们将把生活在"班加罗尔"城市中的所有员工分配给项目" p01"。

mysql> INSERT INTO projectemployee (projectid, employeeid)
SELECT 'p01', ea.employeeid
FROM employeeaddress ea
WHERE ea.city = 'Bangalore';

Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

因此,将2行插入到projectemployee表中。

我们可以使用选择查询来检查。

mysql> SELECT * FROM projectemployee;
+-----------+------------+
| projectid | employeeid |
+-----------+------------+
| p01       | e01        |
| p01       | e04        |
+-----------+------------+
2 rows in set (0.00 sec)