Bài MySQL 27: Lệnh INSERT INTO SELECT trong MySQL

0
612

Xin chào các bạn, trong bài học ngày hôm nay mình sẽ hướng dẫn các bạn sử dụng lệnh INSERT INTO SELECT để chèn dữ liệu vào một bảng từ kết quả của câu lệnh SELECT.

Giới thiệu

Trong các bài học trước, mình đã hướng dẫn các bạn cách thêm một hoặc nhiều hàng vào một bảng bằng cách sử dụng câu lệnh INSERT với một danh sách các giá trị cột được xác định trong mệnh đề VALUES:

Bên cạnh việc sử dụng các giá trị row trong mệnh đề VALUES, bạn có thể sử dụng kết quả của câu lệnh SELECT làm nguồn dữ liệu cho câu lệnh INSERT, cú pháp chung như sau:

Như các bạn có thể thấy, thay vì sử dụng mệnh đề VALUES thì chúng ta có thể sử dụng câu lệnh SELECT. Câu lệnh SELECT sẽ lấy dữ liệu từ một hoặc nhiều bảng.

Câu lệnh INSERT INTO SELECT rất hữu ích khi bạn muốn sao chép dữ liệu từ một bảng khác sang một bảng.

Ví dụ về câu lệnh INSERT INTO SELECT

Giả sử chúng ta có bảng suppliers với cấu trúc sau:

Bởi vì những hợp đồng mới nên tất cả khách hàng từ California, Hoa Kỳ trở thành nhà cung cấp của công ty. Truy vấn sau tìm tất cả khách hàng ở California, Hoa Kỳ:

kết quả trả về là:

Bây giờ, bạn cần phải chèn những khách hàng này từ bảng customers vào bảng suppliers. Câu lệnh INSERT INTO SELECT sau đây sẽ giúp bạn làm việc này:

MySQL sẽ trả về một thông báo:

Nó có nghĩa là 11 hàng từ bảng khách hàng đã được chèn vào bảng nhà cung cấp thành công mà không có bất kì trùng lặp hoặc cảnh báo nào.

Truy vấn sau trả về dữ liệu từ bảng suppliers sau khi chèn:

kết quả:

Kết luận

Như vậy trong bài học ngày hôm nay mình đã hướng dẫn các bạn sử dụng lệnh INSERT INTO SELECT để chèn dữ liệu vào một bảng từ kết quả của câu lệnh SELECT. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về câu lệnh INSERT IGNORE trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây