Cách sử dụng INSERT INTO SELECT trong MySQL

17/08/2023 - lượt xem
Chia sẻ
 
Rate this post

Trong bài viết này, chúng ta sẽ cùng học cách sử dụng câu lệnh INSERT INTO SELECT trong MySQL để chèn dữ liệu vào một bảng, nơi dữ liệu đến từ kết quả của một câu lệnh SELECT.

Tổng quan về câu lệnh INSERT INTO SELECT trong MySQL

Trong bài viết trước, chúng ta đã học cách chèn một hoặc nhiều hàng vào bảng bằng cách sử dụng câu lệnh INSERT có danh sách các giá trị cột được chỉ định trong mệnh đề VALUES.

INSERT INTO table_name(c1,c2,...)
VALUES(v1,v2,..);

Bên cạnh việc sử dụng các giá trị hàng 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.

Sau đây minh họa cú pháp của câu lệnh INSERT INTO SELECT:

INSERT INTO table_name(column_list)
SELECT 
   select_list 
FROM 
   another_table
WHERE
   condition;

Trong cú pháp này, thay vì sử dụng mệnh đề VALUES, bạn có thể sử dụng một câu lệnh SELECT. Câu lệnh SELECT có thể 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ừ các bảng khác sang một bảng hoặc tổng hợp dữ liệu từ nhiều bảng vào một bảng.

Ví dụ về INSERT INTO SELECT MySQL

Đầu tiên, tạo một bảng mới có tên suppliers:

CREATE TABLE suppliers (
    supplierNumber INT AUTO_INCREMENT,
    supplierName VARCHAR(50) NOT NULL,
    phone VARCHAR(50),
    addressLine1 VARCHAR(50),
    addressLine2 VARCHAR(50),
    city VARCHAR(50),
    state VARCHAR(50),
    postalCode VARCHAR(50),
    country VARCHAR(50),
    customerNumber INT,
    PRIMARY KEY (supplierNumber)
);

Giả sử tất cả khách hàng từ California, USA trở thành nhà cung cấp của công ty. Truy vấn sau tìm tất cả các khách hàng ở California, Hoa Kỳ:

SELECT 
    customerNumber,
    customerName,
    phone,
    addressLine1,
    addressLine2,
    city,
    state,
    postalCode,
    country
FROM
    customers
WHERE
    country = 'USA' AND 
    state = 'CA';

kết quả:

Thứ hai, sử dụng câu lệnh INSERT INTO ... SELECT để chèn những khách hàng định vị California USA từ bảng customers vào bảng  suppliers:

INSERT INTO suppliers (
    supplierName, 
    phone, 
    addressLine1,
    addressLine2,
    city,
    state,
    postalCode,
    country,
    customerNumber
)
SELECT 
    customerName,
    phone,
    addressLine1,
    addressLine2,
    city,
    state ,
    postalCode,
    country,
    customerNumber
FROM 
    customers
WHERE 
    country = 'USA' AND 
    state = 'CA';

Nó trả về thông báo sau cho biết 11 hàng đã được chèn thành công.

11 row(s) affected Records: 11  Duplicates: 0  Warnings: 0

Thứ ba, xác minh phần chèn bằng cách truy vấn dữ liệu từ bảng suppliers:

SELECT * FROM suppliers;

Kết quả:

 

 

 

 

 

 

Sử dụng câu lệnh SELECT trong danh sách VALUES

Đầu tiên, tạo một bảng mới có tên stats:

CREATE TABLE stats (
    totalProduct INT,
    totalCustomer INT,
    totalOrder INT
);

Thứ hai, sử dụng câu lệnh INSERT để chèn các giá trị xuất phát từ câu lệnh SELECT:

INSERT INTO stats(totalProduct, totalCustomer, totalOrder)
VALUES(
	(SELECT COUNT(*) FROM products),
	(SELECT COUNT(*) FROM customers),
	(SELECT COUNT(*) FROM orders)
);

Trong ví dụ này:

  • Đầu tiên, sử dụng các câu lệnh SELECT với các hàm COUNT() để lấy tổng sản phẩm, nhân viên và đơn đặt hàng.
  • Thứ hai, sử dụng các giá trị được trả về từ câu lệnh SELECT thay cho các giá trị trong mệnh đề VALUES của câu lệnh INSERT.

Thứ ba, truy vấn dữ liệu từ bảng stats:

SELECT * FROM stats;

kết quả:

 

 

Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh INSERT INTO SELECT MySQL để chèn dữ liệu vào bảng từ tập kết quả.

Các bạn có thể tham khảo: https://www.mysqltutorial.org/mysql-insert-into-select/

Các bài viết liên quan:

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm