Chiave primaria di incremento automatico in CREATE TABLE ... AS SELECT


12

Ho creato una tabella utilizzando una query di selezione complicata tramite CREATE TABLE ... AS SELECT.... Come posso aggiungere una chiave primaria di incremento automatico in questa query?

Per esempio:

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` 

Questa query crea una tabella che contiene firstname, lastname, lang, username, group_namecolonne. Voglio che abbia anche una idcolonna che è una chiave primaria di autoincremento.

C'è un modo per farlo modificando questa query? So che posso farlo modificando la tabella dopo aver eseguito questa query, ma se c'è un modo per farlo direttamente create tablenell'istruzione, mi piacerebbe sapere come farlo.

Risposte:


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

Finché non hai una colonna 'id' nella tua SELECT, questo sembra fare esattamente quello che vuoi. Le colonne nella selezione verranno aggiunte a destra delle colonne dichiarate.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (anche nelle versioni precedenti).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.