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"的别名。
示例表
在本教程中,我们将使用employeeaddress
和projectemployee
表。
表:员工地址
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)