Mysql

CREATE TABLE … AS SELECT 中的自動增量主鍵

  • May 28, 2017

我使用複雜的選擇查詢通過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語句中執行此操作,我想知道如何執行此操作。

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/en/create-table-select.html(也在以前的版本中)。

引用自:https://dba.stackexchange.com/questions/47470