假设新表已经存在,则可以使用INSERT INTO … SELECT来移动数据.我在这里假设您不想在两个源表之间删除重复项时使用UNION ALL.
INSERT INTO new_table (`user_id`, `some_column`, `some_column_2`)
SELECT COALESCE(user_id_slot_1, user_id_slot_2),
some_column,
some_column2
FROM table1
UNION ALL
SELECT COALESCE(user_id_slot_1, user_id_slot_2),
some_column,
some_column2
FROM table2
注意:上面查询中的COALESCE(user_id_slot_1,user_id_slot_1)项如果不为NULL,则将选择user_id_slot_1,否则将选择user_id_slot_2.假设每个记录中只有一个为非NULL,这应该很好.
假设new_table表的id列设置为自动递增,则MySQL将为您分配这些值.您需要做的就是在new_table中省略id的值,MySQL将处理其余的值.
您应该使用以下内容创建新表:
CREATE TABLE new_table (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
some_column VARCHAR(50) NOT NULL,
some_column_2 VARCHAR(50) NOT NULL
)