创建一列,从另一列复制数据

bybem2ql  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(358)

我使用的是mysql,我想在表中添加一列,但这是默认值,我想从另一列复制数据,例如:
我有两个简单列的表测试:

SELECT * FROM TEST

+----+-------------+
| ID | DESCRIPTION |
+----+-------------+
|  1 | test 1      |
|  2 | test 2      |
|  3 | test 3      |
|  4 | test 4      |
+----+-------------+

我想在同一个表中添加一列,假设数据来自描述,因此如果我运行:

ALTER TABLE TEST ADD COLUMN DESCRIPTION2 VARCHAR(20)

我会得到:

SELECT * FROM TEST

+----+-------------+--------------+
| ID | DESCRIPTION | DESCRIPTION2 |
+----+-------------+--------------+
|  1 | test 1      | test 1       |
|  2 | test 2      | test 2       |
|  3 | test 3      | test 3       |
|  4 | test 4      | test 4       |
+----+-------------+--------------+

我可以通过在alter表之后进行简单的更新来轻松实现这一点,但是由于我打算实现这一点的表非常庞大,为了提高性能,我宁愿在一条语句中实现这一点,但是我不知道这是否可能,因为我在mysql文档中没有找到任何与此相关的内容。
为了确定,我试着跑:

ALTER TABLE TEST ADD COLUMN DESCRIPTION2 VARCHAR(20) DEFAULT `DESCRIPTION`

但这违反了语法
有没有比更新更好的方法呢?

yjghlzjz

yjghlzjz1#

不能在同一语句中更改表结构和更新数据。除非是生成的列,否则需要分别使用alter table和update。

相关问题