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` 

このクエリは、含まれているテーブルを作成しfirstnamelastnamelangusernamegroup_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/en/create-table-select.html(以前のバージョンでも)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.