Incrémentation automatique de la clé primaire dans CREATE TABLE… AS SELECT


12

J'ai créé une table à l'aide d'une requête de sélection complexe via CREATE TABLE ... AS SELECT.... Comment puis-je ajouter une clé primaire à incrémentation automatique dans cette requête?

Par exemple:

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` 

Cette requête crée une table qui contient firstname, lastname, lang, username, group_namecolonnes. Je veux qu'il ait également une idcolonne qui est une clé primaire à auto-incrémentation.

Existe-t-il un moyen de le faire en modifiant cette requête? Je sais que je peux le faire en modifiant la table après avoir exécuté cette requête, mais s'il existe un moyen de le faire directement dans la create tabledéclaration, j'aimerais savoir comment faire cela.

Réponses:


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

Tant que vous n'avez pas de colonne «id» dans votre SELECT, cela semble faire exactement ce que vous voulez. Les colonnes de la sélection seront ajoutées à droite des colonnes que vous déclarez.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (également dans les versions précédentes).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.