mysql使用查询结果进行插入操作

本篇原创发布于:FleyX 的个人博客

  经常在使用 mysql 的过程中想要从一张表中查出一些数据插入到另一张表中,操作如下。

1、方法

  使用 insert … select …操作。要求两边参数个数,参数类型完全一致,所以如果不一致就需要进行一些转换操作来让它一致。例子如下:

  从表 B 中查数据插入到表 A 中。

  1. A 表字段多,B 表字段少
1
2
3
4
5
6
7
8
9
10
11
//A表结构
A:{
a:int,
b:int,
c:int
}
//B表结构
B:{
a:int,
b:int
}

sql 语句如下:

1
insert into A(a,b,c) select b.*,1 from B b;

  由于 B 表比 A 表少了一个 int 型参数 c,所以在 select 语句中加上一个数值补齐。

  1. A 表字段少,B 表字段多
1
2
3
4
5
6
7
8
9
A:{
a:int,
b:int
}
B:{
a:int,
b:int,
c:int
}

sql 语句如下:

1
insert into A(a,b) select a,b from B

  A 表只有两个 int 参数,所以只能从 B 中 select 两个参数,不一定是 a,b。也可以是 a,c 只要参数类型,个数一致就行。

  1. A,B 表字段一致,但是类型不一致
1
2
3
4
5
6
7
8
9
10
//A表结构
A:{
a:int,
b:int
}
//B表结构
B:{
a:string,
b:int
}

sql 语句如下:

1
insert into A(a,b) select (cast a as SIGNED),b from B

  使用类型转换将参数类型转换为一致即可。

本篇原创发布于:FleyX 的个人博客

坚持原创技术分享,您的支持将鼓励我继续创作!