我想将temp_sales
表中的所有字段复制到sales
表(在特定字段之后)。我希望尽可能以最快的方式完成。如何在SQL中执行此操作?
CREATE TABLE IF NOT EXISTS `temp_sales` (
`field1` varchar(10) NOT NULL,
`field2` varchar(20) NOT NULL,
`field3` varchar(20) NOT NULL,
`field4` varchar(50) NOT NULL,
`field5` varchar(50) NOT NULL,
`field6` varchar(50) NOT NULL,
`field7` varchar(50) NOT NULL,
`field8` tinyint(2) NOT NULL,
`field9` tinyint(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13692 ;
换句话说:销售表中有一些字段。我想在sales
的{{1}}表格中添加更多新的字段(无数据)。
答案 0 :(得分:1)
这是一个三步过程:
0.1。您需要temp_sales
中的一些唯一或主键字段,将temp_sales
中的行与sales
中的相应行相关联(再次通过唯一/主键)
0.2。您需要一个DDL语句,例如
ALTER TABLE `sales`
ADD COLUMN `field1`VARCHAR(10) AFTER `whatever`,
ADD COLUMN `field2`VARCHAR(10) AFTER `fields2`,
...
0.3。您需要一个DML语句,例如
UPDATE `sales`
INNER JOIN `temp_sales` ON `sales`.`keyfield`=`temp_sales`.`keyfield`
SET `sales`.`field1`=`tempsales`.`field1`,
`sales`.`field2`=`tempsales`.`field2`,
...
答案 1 :(得分:0)
你可以这样做:
mysql> create table new_table_name as(select * from existing_table_name);
//It will also populate existing table data to new table if present
//If old table is empty then it will create same copy of that table
In your case:
mysql> create table sales as(select * from temp_sales);