将所有字段添加到另一个表的最快方法?

时间:2012-03-14 10:55:07

标签: mysql sql database

我想将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}}表格中添加更多新的字段(无数据)。

2 个答案:

答案 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);