MySQL组合INSERT和SELECT选择性插入数据数据库
MySQL可以组合INSERT和SELECT命令,实现选择性的从一个或多个表中读取数据,再插入这些数据到另一个表中。
1 读取一个表
假设有表 order,要读取表 user 中部分字段的所有值,并插入到表中。命令如下:
INSERT ...
MySQL可以组合INSERT和SELECT命令,实现选择性的从一个或多个表中读取数据,再插入这些数据到另一个表中。
1 读取一个表
假设有表 order,要读取表 user 中部分字段的所有值,并插入到表中。命令如下:
INSERT INTO order(title, description, update_time) SELECT name, desc, unix_timestamp(now()) FROM user;
这条语句要求目标表order必须存在,而且字段已经定义好。
由于目标表order已经存在,所以除了能够插入源表user的字段外,还可以插入常量,如上的时间now()。
2 同时创建表
同上的例子,但是order表不存在,我们从user表中读取数据,再创建order表,之后再插入数据:
SELECT name, desc INTO order FROM user;
这里要求order表原本不存在。
3 读取多表
现在有3个表,boy、girl和target,我们要从boy、girl表中筛选若干个字段,插入到target指定的字段中,命令如下:
INSERT INTO `target`(`bname`, `gname`, `update_time`) SELECT b.name, g.name, unix_timestamp(now()) from `boy` as b join `girl` as g;
如果target表原本没有数据,那么执行之后,target中的数据量就是表girl和boy两个表数据数的乘机。
1 读取一个表
假设有表 order,要读取表 user 中部分字段的所有值,并插入到表中。命令如下:
INSERT INTO order(title, description, update_time) SELECT name, desc, unix_timestamp(now()) FROM user;
这条语句要求目标表order必须存在,而且字段已经定义好。
由于目标表order已经存在,所以除了能够插入源表user的字段外,还可以插入常量,如上的时间now()。
2 同时创建表
同上的例子,但是order表不存在,我们从user表中读取数据,再创建order表,之后再插入数据:
SELECT name, desc INTO order FROM user;
这里要求order表原本不存在。
3 读取多表
现在有3个表,boy、girl和target,我们要从boy、girl表中筛选若干个字段,插入到target指定的字段中,命令如下:
INSERT INTO `target`(`bname`, `gname`, `update_time`) SELECT b.name, g.name, unix_timestamp(now()) from `boy` as b join `girl` as g;
如果target表原本没有数据,那么执行之后,target中的数据量就是表girl和boy两个表数据数的乘机。
上一篇: ACCESS查询当天数据的SQL语句(DateDif
下一篇:MySQL批量插入数据
我要评论