TABLO OLUŞTUR seçeneğinde otomatik ara birincil anahtar… SEÇ OLARAK


12

Tablo aracılığıyla karmaşık bir seçme sorgusu kullanarak oluşturdum CREATE TABLE ... AS SELECT.... Bu sorguya otomatik yineleme birincil anahtarını nasıl ekleyebilirim?

Örneğin:

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` 

Bu sorgu içeren bir tablo oluşturur firstname, lastname, lang, username, group_namesütunlar. Ayrıca idbir autoincrement birincil anahtar olan bir sütun olmasını istiyorum .

Bu sorguyu değiştirerek bunu yapmanın bir yolu var mı? Bu sorguyu yürüttükten sonra tabloyu değiştirerek bunu yapabilirim biliyorum, ama doğrudan create tableifadede bunu yapmanın herhangi bir yolu varsa , bunu nasıl yapacağımı bilmek istiyorum.

Yanıtlar:


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

İçinde bir 'id' sütunu bulunmadığı sürece SELECT, bu tam olarak istediğinizi yapıyor gibi görünüyor. Seçimdeki sütunlar, bildirdiğiniz sütunların sağına eklenir.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (önceki sürümlerde de).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.