Kunci utama peningkatan otomatis dalam CREATE TABLE ... AS SELECT

12

Saya membuat tabel menggunakan kueri pemilihan rumit via CREATE TABLE ... AS SELECT.... Bagaimana saya bisa menambahkan kunci primer peningkatan otomatis dalam permintaan ini?

Sebagai contoh:

create table `user_mv` select `user`.`firstname` as 
   `firstname`,
   `user`.`lastname` as `lastname`,
   `user`.`lang` as `lang`,
   `user`.`name` as `user_name`,
   `group`.`name` as `group_name`
from `user`
  inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`)
  left  join `group` on (`group`.`group_id`=`user_groups`.`group_id`)
where `user`.`lang`=`group`.`lang` 

Query ini menciptakan tabel yang berisi firstname, lastname, lang, username, group_namekolom. Saya ingin juga memiliki idkolom yang merupakan kunci utama peningkatan otomatis.

Apakah ada cara untuk melakukan ini dengan mengubah kueri ini? Saya tahu saya bisa melakukannya dengan mengubah tabel setelah mengeksekusi kueri ini, tetapi jika ada cara untuk melakukan ini secara langsung dalam create tablepernyataan, saya ingin tahu bagaimana melakukannya.

Arash Mousavi
sumber

Jawaban:

11
CREATE TABLE `user_mv` (id INT AUTO_INCREMENT PRIMARY KEY) SELECT `user`.`firstname` as 
   `firstname`,
   `user`.`lastname` as `lastname`,
   `user`.`lang` as `lang`,
   `user`.`name` as `user_name`,
   `group`.`name` as `group_name`
from `user`
  inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`)
  left  join `group` on (`group`.`group_id`=`user_groups`.`group_id`)
where `user`.`lang`=`group`.`lang`;

Selama Anda tidak memiliki kolom 'id' di Anda SELECT, ini tampaknya melakukan apa yang Anda inginkan. Kolom di pilih akan ditambahkan ke kanan kolom yang Anda nyatakan.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (juga dalam versi sebelumnya).

Michael - sqlbot
sumber