如何通过SQL语句交换MySQL中两列的列名?
解决MariaDB交换表列名的问题
你的SQL语法错误,且直接交换列名会触发重名冲突,具体问题和解决方案如下:
错误原因
RENAME COLUMN语句不需要指定数据类型(你写的VARCHAR(100)属于冗余内容),这是导致语法报错的直接原因。- 直接交换
City和Salary会出现重名冲突——当你尝试把City改为Salary时,原Salary列仍存在,数据库不允许同表有重复列名。
正确操作步骤
需要通过临时列名中转来完成交换,分三步执行SQL:
-- 1. 将City临时重命名为不存在的列名 ALTER TABLE firsttry RENAME COLUMN City TO Temp_City; -- 2. 将原Salary列重命名为City ALTER TABLE firsttry RENAME COLUMN Salary TO City; -- 3. 将临时列重命名为Salary ALTER TABLE firsttry RENAME COLUMN Temp_City TO Salary;
执行完成后,表的City和Salary列名就完成了交换,列内数据不会被修改。
内容的提问来源于stack exchange,提问作者Sparsh Maheshwari
相关产品推荐
相关产品推荐

