sql-b表数据插入或更新到a表

来源:互联网 发布:程序员开发工具 编辑:程序博客网 时间:2024/05/16 10:16

yTest01:id,name,grade,age

yTest02:id,name,grade,age

 

insert时:

INSERT INTO yTest01 (id, NAME, grade)

SELECT
   id,
   NAME,
   grade
FROM
   yTest02
WHERE
   age > 16

 

update时:

UPDATE yTest01 y1
INNER JOIN yTest02 y2 ON y1.id = y2.id
SET y1. NAME = y2. NAME,
 y1.grade = y2.grade
WHERE
 y2.age > 16

 

MySQL中INSERT INTO SELECT的使用:

1.语法介绍

有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:

INSERT INTO db1_name (field1,field2)SELECT field1,field2 FROM db2_name

上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:

INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb

2. 语法错误注意
需要注意的是嵌套查询部分最后一定要有设置表别名,如下:

SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS tb

即最后的AS tb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:

ERROR 1248 (42000): Every derived TABLE must have its own alias

另外,MySQL中INSERT INTO SELECT不能加VALUES,即不能写成如下形式:

INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name

否则也会报错:You have an error in your SQL syntax

 

INSERT INTO SELECT语句

Insert into Table2(field1,field2,...) select value1,value2,... from Table1

要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段

 

SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

 


 

 

0 0
原创粉丝点击