สร้างคีย์หลักอัตโนมัติใน 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/th/create-table-select.html (เช่นเดียวกับในรุ่นก่อนหน้า)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.