用户在错误的列中输入了数据。 例如,我有一个包含两列申请人姓名和父亲姓名的表。数据操作员已在申请人姓名栏中输入父亲姓名,并在父亲姓名栏中输入申请人姓名。请提出一种交换两个列中数据的方法,即申请人名称列中的数据应移至父亲名称列,父亲名称列中的数据应移至申请人名称列。使用单个SQL查询
答案 0 :(得分:1)
这听起来很有趣,但是您可以轻松地更改表并使用正确的标签来更改列名称。
答案 1 :(得分:0)
CREATE TABLE `swap_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`x` varchar(255) DEFAULT NULL,
`y` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `swap_test` VALUES ('1', 'a', '10');
INSERT INTO `swap_test` VALUES ('2', NULL, '20');
INSERT INTO `swap_test` VALUES ('3', 'c', NULL);
解决方案是:
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
更多信息可以为found here。
答案 2 :(得分:0)
您只需分配名称
update the_table
set applicant_name = father_name,
father_name = applicant_name
where ...; -- make sure to only do that for the rows that need it
SQL标准要求在赋值之前 评估右侧使用的值。
这适用于所有现代DBMS,但不适用于MySQL。如果您需要MySQL的解决方法,请参阅dexter的答案。