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_name
Colonnes. Je veux qu'il ait également une colonne id
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 le create table
déclaration, j'aimerais savoir comment faire.
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).