我有两个表,需要交换每个表中一列的值—当它们在同一个表中时,我可以这样做,但当我尝试对不同的表执行此操作时,第二个值已经被覆盖,因此丢失。
例如:
table1
id user_id currency col2 col3......
1 1 10 Bob 2018-04-16
2 2 150 Tom 2018-05-17
3 3 60 Phil 2018-06-04
4 4 125 Jon 2017-12-01
5 5 35 Mike 2018-07-21
table2
id user_id salary col2 col3......
1 1 USD 16 Active
2 2 USD 17 Active
3 3 GBP 21 Left
4 4 CAD 16 Active
5 5 AUD 19 Active
我需要这些看起来像:
table1
id user_id currency col2 col3......
1 1 USD Bob 2018-04-16
2 2 USD Tom 2018-05-17
3 3 GBP Phil 2018-06-04
4 4 CAD Jon 2017-12-01
5 5 AUD Mike 2018-07-21
table2
id user_id salary col2 col3......
1 1 10 16 Active
2 2 150 17 Active
3 3 60 21 Left
4 4 125 16 Active
5 5 35 19 Active
我试过:
UPDATE table1 t1, table2 t2
SET t1.currency=t2.salary, t2.salary=t1.currency
WHERE t1.user_id=t2.user_id;
但这不起作用(货币设置正确,但工资不正确),有可能吗?
在两个表之间交换两列值看起来是一个可行的解决方案,但是解决方案是更改表名,因为所有列都需要交换,而我只需要交换单个列。
1条答案
按热度按时间xqk2d5yq1#
我相信您需要同时使用ddl和dml来实现这一点。
首先,您需要重命名要交换的列之一,并添加一列以保存新值:
然后独立更新每个表:
最后删除额外的列: