स्वायत्त प्राथमिक कुंजी क्रिएट टेबल में ... चयन के रूप में


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/en/create-table-select.html (पिछले संस्करणों में भी)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.