Clave principal de autoincremento en CREATE TABLE ... AS SELECT


12

Creé la tabla usando una consulta de selección complicada a través de CREATE TABLE ... AS SELECT.... ¿Cómo puedo agregar una clave primaria de autoincremento en esta consulta?

Por ejemplo:

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` 

Esta consulta crea una tabla que contiene firstname, lastname, lang, username, group_namecolumnas. Quiero que también tenga una idcolumna que sea una clave primaria de autoincremento.

¿Hay alguna manera de hacer esto cambiando esta consulta? Sé que puedo hacerlo modificando la tabla después de ejecutar esta consulta, pero si hay alguna forma de hacerlo directamente en la create tabledeclaración, me gustaría saber cómo hacerlo.

Respuestas:


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

Mientras no tenga una columna 'id' en su SELECT, esto parece hacer exactamente lo que quiere. Las columnas en la selección se agregarán a la derecha de las columnas que declare.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (también en versiones anteriores).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.