我需要快速复制表中的DATETIME列并为其指定新名称。
我的表中有一个名为myResults的名为myDate的列,我需要一个查询来在表中创建一个名为newDate的新列,该列与myDate列具有完全相同的数据。
有没有比通过制作新列的明显的两步方法更快的方法,然后复制所有数据(这是一个大表,我正在寻找最快的方法)?
明显的解决方案:
ALTER TABLE `myResults` ADD `newDate` DATETIME;
UPDATE `myResults` SET `newDate` = `myDate`;
答案 0 :(得分:18)
不幸的是,显而易见的解决方案是唯一的解决方案。
但请注意,一般情况下,您不应该复制关系数据库中的列。
答案 1 :(得分:16)
UPDATE `table_name` SET `new_column` = `existing_column` WHERE `id`=`id`
答案 2 :(得分:2)
为什么您的工作负载需要一个新的日期时间列,它会复制另一个列数据?这听起来像是可怕的练习?告诉我们你想要达到的目标怎么样?您可以通过几种不同的方式使用相同的数据提取第二列,而无需实际复制数据:
SELECT date1 AS date_old, date1 AS date_new FROM table;
- 或 - ,您可以创建视图
CREATE VIEW virtual_table AS
SELECT date1 AS date_old, date1 AS date_new FROM table
;
SELECT * FROM virtual_table;
答案 3 :(得分:1)
如果你只需要一个默认值,你可以选择静态默认值或使用函数调用。
ALTER TABLE `myResults` ADD `newDate` DATETIME DEFAULT '2010-01-01';
或
ALTER TABLE `myResults` ADD `newDate` DATETIME DEFAULT current_timestamp;