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

Mysql 将所有字段添加到另一个表的最快方法?,mysql,sql,database,Mysql,Sql,Database,我想将所有字段从temp\u 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

我想将所有字段从
temp\u 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表中有一些字段。我想在
temp\u sales
(无数据)的
sales
表中添加更多新的字段。

这是一个三步过程:

.1。在
temp\u sales
中需要一些唯一或主键字段,将
temp\u sales
中的一行链接到
sales
中的相应行(同样通过唯一/主键)

.2。您需要一个DDL语句,例如

ALTER TABLE `sales` 
  ADD COLUMN `field1`VARCHAR(10) AFTER `whatever`,
  ADD COLUMN `field2`VARCHAR(10) AFTER `fields2`,
...
UPDATE `sales` 
INNER JOIN `temp_sales` ON `sales`.`keyfield`=`temp_sales`.`keyfield`
SET `sales`.`field1`=`tempsales`.`field1`,
  `sales`.`field2`=`tempsales`.`field2`,
  ...
.3。您需要一个DML语句,例如

ALTER TABLE `sales` 
  ADD COLUMN `field1`VARCHAR(10) AFTER `whatever`,
  ADD COLUMN `field2`VARCHAR(10) AFTER `fields2`,
...
UPDATE `sales` 
INNER JOIN `temp_sales` ON `sales`.`keyfield`=`temp_sales`.`keyfield`
SET `sales`.`field1`=`tempsales`.`field1`,
  `sales`.`field2`=`tempsales`.`field2`,
  ...
您可以这样做:

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

ALTER TABLE
sales`ADD COLUMN`仍然需要花费很多时间才能写出来。我有大约30个字段要添加:(这是没有办法的。复制粘贴是你需要的。只是要明确一点:在MySQL中没有办法引用字段名,因为数据-DDL和DML不能混合。如果你解释你需要它的原因,也许我们可以提供替代方案。