将一个表的数据存到另一个符合条件的新表中

本文介绍了一种使用SQL语句将当前日期时间与学校ID关联并插入到MonthCount表中的方法。通过SELECT与INSERT结合的方式实现了自动化的数据填充。

INSERT INTO MonthCount

      (SID, Month)

SELECT SID, DateTime.now

FROM School

### MySQL 数据迁移:将现有中的数据插入到一张 在 MySQL 中,可以使用 `INSERT INTO ... SELECT` 的方式来完成从一个一个数据迁移操作。这种方法适用于源和目标结构相同或者部分字段匹配的情况。 以下是具体实现方法: #### 方法一:直接复制全部字段 如果两个的字段数量以及顺序完全一致,则可以直接通过以下 SQL 实现数据迁移[^2]: ```sql INSERT INTO target_table SELECT * FROM source_table; ``` 需要注意的是,在实际应用中,通常不建议直接使用 `*` 来示所有列名,因为这可能会因结构调整而导致潜在错误。因此推荐显式指定字段列: ```sql INSERT INTO target_table (column1, column2, column3) SELECT column1, column2, column3 FROM source_table; ``` #### 方法二:基于条件筛选数据 当只需要迁移满足特定条件的部分记录时,可以在 `SELECT` 部分加入过滤条件。例如只迁移支付成功时间早于某一天的数据[^1]: ```sql INSERT INTO order_record (id, pay_success_time, other_column) SELECT id, pay_success_time, other_column FROM order_today WHERE pay_success_time < '2023-08-08'; ``` 此查询会把 `order_today` 里所有符合条件 (`pay_success_time`) 的行转移到 `order_record` 上。 #### 方法三:利用存储过程逐条处理复杂逻辑 对于更复杂的场景比如涉及多步计算或者其他业务规则的情况下,可能需要用到存储过程配合循环读取每一条待转移的信息再逐一写入位置[^3]: 下面是一个简单的例子展示如何创建这样的存储过程: ```sql DELIMITER $$ CREATE PROCEDURE migrate_data() BEGIN DECLARE done INT DEFAULT FALSE; -- 定义结束标志变量 DECLARE idp BIGINT(20); -- 声明局部变量用于保存每一行ID值 DECLARE brandIdp VARCHAR(50); ... /* 创建游标 */ CURSOR cur FOR SELECT id, brand_id, name, url FROM source_table; OPEN cur; read_loop: LOOP FETCH cur INTO idp, brandIdp, namep, urlp ; IF done THEN LEAVE read_loop; END IF; INSERT INTO destination_table(id, brand_id, name, url) VALUES (idp, brandIdp, namep, urlp ); END LOOP; CLOSE cur; END$$ DELIMITER ; ``` 调用该存储过程即可启动整个迁移流程:`CALL migrate_data();`. 以上就是几种常见的MySQL跨间移动数据的方法介绍.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值