Первинний ключ автоматичного збільшення в CREATE TABLE… AS SELECT


12

Я створив таблицю, використовуючи складний запит вибору через CREATE TABLE ... AS SELECT.... Як я можу додати в цей запит первинний ключ автоматичного збільшення?

Наприклад:

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` 

Цей запит створює таблицю , яка містить firstname, lastname, lang, username, group_nameстовпці. Я хочу, щоб він також мав idстовпець, який є первинним ключем автоматичного збільшення.

Чи можна це зробити, змінивши цей запит? Я знаю, що можу це зробити, змінивши таблицю після виконання цього запиту, але якщо є який-небудь спосіб зробити це безпосередньо в create tableзаяві, я хотів би знати, як це зробити.

Відповіді:


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

Поки у вас немає стовпчика "id" у вашому SELECT, це, очевидно, робить саме те, що ви хочете. Стовпці у виділеному меню будуть додані праворуч від оголошених стовпців.

http://dev.mysql.com/doc/refman/5.6/uk/create-table-select.html (також у попередніх версіях).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.