我使用的是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`
但这违反了语法
有没有比更新更好的方法呢?
1条答案
按热度按时间yjghlzjz1#
不能在同一语句中更改表结构和更新数据。除非是生成的列,否则需要分别使用alter table和update。