在mysql数据库中,如何实现同列或多列数据互换

本文介绍了一种在MySQL数据库中高效地对同一表内特定列数据进行互换的方法。通过对表进行复制创建中间表,并利用SQL更新语句,实现了在不丢失原始数据的情况下完成数据的准确互换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建表

CREATE TABLE `erp_apply_form` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长id',
  `self_apply_id` varchar(45) DEFAULT NULL COMMENT '自发起的id',
  `record_id` varchar(45) DEFAULT NULL COMMENT '申请关联的业务记录id,合同,付款,出库,某某审批记录的id',
  `approve_id` varchar(45) DEFAULT NULL COMMENT 'erp业务审批流程id',
  `form_title` varchar(100) DEFAULT NULL COMMENT '表单抬头,如果是容器或者表格,容器表格头名称',
  `form_value` varchar(1000) DEFAULT NULL COMMENT '表单值',
  `is_abstract` varchar(45) DEFAULT NULL COMMENT '是否是摘要放到卡片上的,1:是,0:不是',
  `add_id` varchar(45) DEFAULT NULL COMMENT '添加人',
  `add_time` datetime DEFAULT NULL COMMENT '添加时间'
  PRIMARY KEY (`id`) USING BTREE,
  KEY `form_group_id` (`form_group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=94839 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='表单';

添加表格数据
INSERT INTO `erp_apply_form`(`id`, `self_apply_id`, `record_id`, `approve_id`, `form_title`, `form_value`, `is_abstract`, `add_id`, `add_time`) VALUES (16065, '1273', '45', '25', '供方公司', '中国淘宝', '0', '1035', '2020-12-28 14:58:03');
INSERT INTO `erp_apply_form`(`id`, `self_apply_id`, `record_id`, `approve_id`, `form_title`, `form_value`, `is_abstract`, `add_id`, `add_time`) VALUES (16066, '1273', '45', '25', '需方公司', '美国ebay', '0', '1035', '2020-12-28 14:58:03');
INSERT INTO `erp_apply_form`(`id`, `self_apply_id`, `record_id`, `approve_id`, `form_title`, `form_value`, `is_abstract`, `add_id`, `add_time`) VALUES (16067, '1274', '46', '25', '供方公司', '中国淘宝', '0', '1035', '2020-12-28 14:58:03');
INSERT INTO `erp_apply_form`(`id`, `self_apply_id`, `record_id`, `approve_id`, `form_title`, `form_value`, `is_abstract`, `add_id`, `add_time`) VALUES (16068, '1274', '46', '25', '需方公司', '美国ebay', '0', '1035', '2020-12-28 14:58:03');

1、mysql表中初始数据

2、form_value列数据进行互换,如下图

3、解决问题思想:(通过中间表数据,来保存原始数据)

对于同列同组的数据进行数据互换,这个时候如果直接更新某一列会导致原始数据覆盖,从而影响下一列数据的赋值,
那么此时可以把原始数据复制一份进行保存,所以解决方法如下:

1、对erp_apply_form表进行复制,生成erp_apply_form_copy表,通过这个A_copy中间表来完成数据的互换
具体sql实现:
UPDATE erp_apply_form SET form_value =( 
    SELECT form_value 
    FROM erp_apply_form_copy
    WHERE approve_id = 25 AND form_title = '供方公司' 
    AND self_apply_id = erp_apply_form.self_apply_id

WHERE form_title = '需方公司' AND approve_id = 25

UPDATE erp_apply_form SET form_value =( 
    SELECT form_value 
    FROM erp_apply_form_copy
    WHERE approve_id = 25 AND form_title = '需方公司' 
    AND self_apply_id = erp_apply_form.self_apply_id

WHERE form_title = '供方公司' AND approve_id = 25

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值