Самый быстрый способ добавить все поля в другую таблицу? - PullRequest
0 голосов
/ 14 марта 2012

Я хочу скопировать все поля из таблицы 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 из temp_sales (без данных).

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Это трехэтапный процесс:

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`,
  ...
0 голосов
/ 14 марта 2012

Вы можете сделать это:

  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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...