Tương đương SELECT INTO trong MySQL: CREATE TABLE ... AS SELECT
MySQL không hỗ trợ SELECT INTO table như SQL Server. Thay vào đó, dùng CREATE TABLE ... AS SELECT để tạo bảng mới từ kết quả truy vấn.
Cú pháp
CREATE TABLE yourNewTableName AS SELECT * FROM yourTableName;
Ví dụ hoàn chỉnh
Tạo bảng gốc:
mysql> CREATE TABLE selectIntoEquivalentDemo (
-> ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ClientName VARCHAR(20),
-> ClientAge INT
-> );
Chèn dữ liệu:
mysql> INSERT INTO selectIntoEquivalentDemo(ClientName, ClientAge) VALUES
('Larry', 34), ('Maxwell', 44), ('Bob', 38), ('David', 39);
Tạo bảng mới từ bảng cũ:
mysql> CREATE TABLE Client_information AS SELECT * FROM selectIntoEquivalentDemo; Query OK, 4 rows affected (0.57 sec)
Kiểm tra bảng mới:
mysql> SELECT * FROM Client_information;
Kết quả:
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Larry | 34 | | 2 | Maxwell | 44 | | 3 | Bob | 38 | | 4 | David | 39 | +----------+------------+-----------+
Các biến thể hữu ích
- Chọn cột cụ thể:
CREATE TABLE new_tbl AS SELECT id, name FROM old_tbl - Thêm điều kiện WHERE:
CREATE TABLE active_users AS SELECT * FROM users WHERE status = 'active' - Đổi tên cột:
CREATE TABLE new_tbl AS SELECT id AS user_id, name FROM old_tbl - Chỉ copy cấu trúc (không data):
CREATE TABLE new_tbl LIKE old_tblhoặcCREATE TABLE new_tbl AS SELECT * FROM old_tbl WHERE 1=0
Lưu ý
- Không copy index, primary key, auto_increment, foreign key, trigger
- Chỉ copy cấu trúc cột và dữ liệu
- Cần thêm index/PK thủ công sau khi tạo