使用另一个表的列数据

时间:2018-04-12 03:55:19

标签: mysql sql

我想创建一个重复的表,例如'users',向新表'users_history'添加几列,在新添加的列中,我想设置源表' s列值。

以下是查询:

CREATE TABLE db_portal.users_history LIKE db_portal.users;INSERT db_portal.users_history SELECT * FROM db_portal.users;

ALTER TABLE db_portal.users_history MODIFY COLUMN id int(11) NOT NULL, 
   DROP PRIMARY KEY, ENGINE = MyISAM, ADD action VARCHAR(8) DEFAULT 'insert' FIRST, 
   ADD revision INT(6) NOT NULL AUTO_INCREMENT AFTER action,
   ADD dt_datetime DATETIME NOT NULL DEFAULT (SELECT join_date FROM db_portal.users) AFTER revision,
   ADD PRIMARY KEY (id, revision);

在新添加的列dt_datetime中,我想从源表中设置join_date列的值。

但我想这对我不起作用。 很感谢任何形式的帮助。感谢。

1 个答案:

答案 0 :(得分:1)

以不同的顺序执行:

CREATE TABLE db_portal.users_history LIKE db_portal.users;

ALTER TABLE db_portal.users_history MODIFY ..........

/* List all columns from "old" table + one new column from "new" table */    
INSERT db_portal.users_history( Old_col1, Old_col2, .... Old_colN, dt_datetime )
SELECT t.*,
       join_date
FROM db_portal.users t;

通过这种方式,insert语句中的最后一列:dt_datetime填充了join_date的值。