Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL đơn lẻ SELECT từ bảng 1 và INSERT vào bảng 2

MySQL cho phép chèn dữ liệu vào bảng đích trực tiếp từ kết quả SELECT của bảng nguồn bằng cú pháp INSERT INTO ... SELECT ....

Ví dụ minh họa

Tạo bảng nguồn:

mysql> create table DemoTable1( 
    Value int 
);

Chèn dữ liệu:

mysql> insert into DemoTable1 values(67);
mysql> insert into DemoTable1 values(46);

Hiển thị bảng nguồn:

mysql> select * from DemoTable1;

Kết quả:

+-------+
| Value |
+-------+
| 67    |
| 46    |
+-------+

Tạo bảng đích và chèn từ bảng nguồn

mysql> create table DemoTable2( 
    Score int 
);
mysql> insert into DemoTable2(Score) select Value from DemoTable1;

Kết quả:

Query OK, 2 rows affected (0.13 sec)
Records: 2 Duplicates: 0 Warnings: 0

Kiểm tra bảng đích:

mysql> select * from DemoTable2;

Kết quả:

+-------+
| Score |
+-------+
| 67    |
| 46    |
+-------+

Giải thích:

  • INSERT INTO DemoTable2(Score): Chỉ định cột đích
  • SELECT Value FROM DemoTable1: Lấy dữ liệu từ bảng nguồn
  • Số cột và kiểu dữ liệu phải tương thích
  • Thực thi như một câu lệnh nguyên tử (atomic)

Cách này hiệu quả hơn nhiều so với SELECT ra ứng dụng rồi INSERT lại, thường dùng cho: sao chép dữ liệu, tạo bản sao bảng, ETL, archiving dữ liệu cũ.