Khóa chính tự động trong TẠO RA BẢNG NHƯ CHỌN


12

Tôi đã tạo bảng bằng cách sử dụng một truy vấn chọn phức tạp thông qua CREATE TABLE ... AS SELECT.... Làm cách nào tôi có thể thêm khóa chính tự động trong truy vấn này?

Ví dụ:

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` 

Truy vấn này tạo ra một bảng có chứa firstname, lastname, lang, username, group_namecột. Tôi muốn nó cũng có một idcột là khóa chính tự động.

Có cách nào để làm điều này bằng cách thay đổi truy vấn này? Tôi biết tôi có thể làm điều đó bằng cách thay đổi bảng sau khi thực hiện truy vấn này, nhưng nếu có bất kỳ cách nào để thực hiện điều này trực tiếp trong create tablecâu lệnh, tôi muốn biết làm thế nào để làm điều đó.

Câu trả lời:


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

Miễn là bạn không có cột 'id' trong đó SELECT, điều này dường như làm chính xác những gì bạn muốn. Các cột trong phần chọn sẽ được thêm vào bên phải các cột bạn khai báo.

http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html (cũng trong các phiên bản trước).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.