mysql查询出数据更新到另一张表、一张表查询出数据插入到另一张

1.查询出数据更新到另一张表

需求:从A表查询出字段数据,更新到B表对应的字段

示例:当table_a表中的b_id=table_b表的id时,将table_b表中的sn,filed1更新到table_a 表中sn,filed1字段

-- 更新数据
UPDATE `table_a` r
INNER JOIN (SELECT id,sn,filed1 FROM `table_b`) t ON r.b_id= t.id
SET r.sn = t.sn,r.filed1 = t.filed1 

2.一张表查询出数据插入到另一张

insert into table_a(字段1,字段2,字段3,....)  select a,b,c,.... from table_b where 条件 

示例:

insert into table_a(`name`,`age`,`gender`) select b_name,b_age,b_gender from table_b where id = 5;

说明:

1、table_a表插入的字段个数必须同select后面跟的字段个数一致

2、where条件可以写多个

3、select后面跟的字段可以写固定值(部分写死,全部写死相当于直接insert,这样就没必要查询)

示例:insert into table_a(`name`,`age`,`gender`) select '张三', 18, b_gender from table_b where id = 5;

### 使用 MySQL查询结果插入一个MySQL 中,可以使用 `INSERT INTO ... SELECT` 的语法结构来实现将查询结果插入一个的功能。以下是详细的说明: #### 基本语法 ```sql INSERT INTO 目标 (列1, 列2, ..., 列N) SELECT 列1, 列2, ..., 列N FROM 来源 WHERE 条件; ``` - 如果目标和来源的字段完全一致,则可以直接省略字段列[^3]。 - 可以通过 `WHERE` 子句筛选需要插入数据。 #### 示例代码 假设有一个名为 `source_table` 的,其中存储了一些学生的信息,现在需要将其部分数据插入到 `target_table` 中。 ##### 插入所有字段的数据 当两个的字段数量和顺序相同时,可执行如下操作: ```sql INSERT INTO target_table SELECT * FROM source_table WHERE condition; ``` ##### 插入选定字段的数据 如果只需要插入选定的部分字段,需明确指定目标中的对应字段名以及来源中的相应字段名: ```sql INSERT INTO target_table (column1, column2, column3) SELECT field1, field2, field3 FROM source_table WHERE condition; ``` #### 特殊情况处理 1. **目标不存在** 若目标尚未创建,可以通过 `CREATE TABLE ... AS SELECT` 创建并填充新[^2]: ```sql CREATE TABLE new_table AS SELECT * FROM source_table WHERE condition; ``` 2. **插入常量值** 当向目标插入额外的固定值时,可以在 `SELECT` 查询中加入常量[^5]: ```sql INSERT INTO target_table (id, name, status) SELECT id, name, 'active' FROM source_table WHERE condition; ``` #### 注意事项 - 确保目标已存在(除非采用 `CREATE TABLE ... AS SELECT` 方法)。 - 数据类型应匹配:目标的字段类型应当能够容纳来自来源数据。 - 需要适当管理主键冲突;例如,在插入前删除重复项或设置自增主键[^4]。 ### 总结 上述方法适用于多种场景下的数据迁移需求,并支持灵活调整插入逻辑以满足实际业务要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值