Hướng dẫn mysql insert into multiple rows from select - chèn mysql vào nhiều hàng từ chọn

Đây là những gì tôi đã tìm thấy hoạt động tốt. Nó hơi dài nhưng nhiều lần dữ liệu bổ sung cần phải được xáo trộn xung quanh.

Chèn nhiều hàng vào Bảng 1 từ Bảng 2 với các giá trị. Ví dụ:

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT col1,col2,col3,col4,col5 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);

Bạn có thể chèn các giá trị được mã hóa cứng để chèn nhiều hàng với dữ liệu lặp lại:

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);

Lưu ý rằng: "Giá trị", "1900-01-01", "9999-12-31" sẽ lặp lại trên tất cả các hàng được chèn vào.

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng một câu lệnh MySQL INSERT để chèn nhiều hàng vào bảng.: in this tutorial, you will learn how to use a single MySQL INSERT statement to insert multiple rows into a table.

MySQL INSERT Câu lệnh nhiều hàng

Để chèn nhiều hàng vào bảng, bạn sử dụng hình thức sau của câu lệnh INSERT:

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)

Trong cú pháp này:

  • Đầu tiên, chỉ định tên của bảng mà bạn muốn chèn sau từ khóa
    INSERT INTO table1 (col1, col2, col3, col4, col5) 
    SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
    FROM table2 t2 
    WHERE t2.val2 IN (MULTIPLE VALUES) 
    AND (Another Conditional);
    
    2.
  • Thứ hai, chỉ định một danh sách cột được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn sau tên bảng.
  • Thứ ba, chỉ định danh sách dữ liệu hàng được phân tách bằng dấu phẩy trong mệnh đề
    INSERT INTO table1 (col1, col2, col3, col4, col5) 
    SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
    FROM table2 t2 
    WHERE t2.val2 IN (MULTIPLE VALUES) 
    AND (Another Conditional);
    
    3. Mỗi yếu tố của danh sách đại diện cho một hàng. Số lượng giá trị trong mỗi phần tử phải giống với số lượng cột trong
    INSERT INTO table1 (col1, col2, col3, col4, col5) 
    SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
    FROM table2 t2 
    WHERE t2.val2 IN (MULTIPLE VALUES) 
    AND (Another Conditional);
    
    4.

MySQL INSERT Giới hạn nhiều hàng

Về lý thuyết, bạn có thể chèn bất kỳ số lượng hàng nào bằng một câu lệnh ____99. Tuy nhiên, khi máy chủ MySQL nhận được câu lệnh INSERT có kích thước lớn hơn

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);
8, nó sẽ phát hành một lỗi quá lớn và chấm dứt kết nối.

Câu lệnh này cho thấy giá trị hiện tại của biến

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);
8:

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)

Dưới đây là đầu ra trên máy chủ cơ sở dữ liệu MySQL của chúng tôi. Lưu ý rằng giá trị trong máy chủ của bạn có thể khác nhau.

Hướng dẫn mysql insert into multiple rows from select - chèn mysql vào nhiều hàng từ chọn

Số là cột

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
0 là số byte.

Để đặt giá trị mới cho biến

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);
8, bạn sử dụng câu lệnh sau:

SET GLOBAL max_allowed_packet=size;

Code language: SQL (Structured Query Language) (sql)

trong đó

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
2 là một số nguyên đại diện cho số kích thước gói tối đa được phép tính bằng byte.

Lưu ý rằng

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional);
8 không có ảnh hưởng đến câu lệnh

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
4. Câu lệnh

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
4 có thể chèn bao nhiêu hàng tùy thích.

Hãy cùng lấy một ví dụ về việc sử dụng câu lệnh INSERT nhiều hàng.

Đầu tiên, hãy tạo một bảng mới có tên

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
7 cho cuộc biểu tình:

CREATE TABLE projects( project_id INT AUTO_INCREMENT, name VARCHAR(100) NOT NULL, start_date DATE, end_date DATE, PRIMARY KEY(project_id) );

Code language: SQL (Structured Query Language) (sql)

Thứ hai, sử dụng câu lệnh INSERT nhiều hàng để chèn hai hàng vào bảng

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
7:

INSERT INTO projects(name, start_date, end_date) VALUES ('AI for Marketing','2019-08-01','2019-12-31'), ('ML for Sales','2019-05-15','2019-11-20');

Code language: SQL (Structured Query Language) (sql)

MySQL đã phát hành tin nhắn sau:

2 row(s) affected

Code language: SQL (Structured Query Language) (sql)

Điều đó có nghĩa là hai hàng đã được chèn vào bảng

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
7 thành công.

Lưu ý rằng khi bạn chèn nhiều hàng và sử dụng hàm

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
1 để nhận ID cuối cùng của cột

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
2, bạn sẽ nhận được ID của hàng được chèn đầu tiên, không phải là ID của hàng chèn cuối cùng.

Thứ ba, sử dụng câu lệnh

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
3 sau đây để xác minh các phần chèn:

SELECT * FROM projects;

Code language: SQL (Structured Query Language) (sql)

Hình ảnh này cho thấy đầu ra:

Hướng dẫn mysql insert into multiple rows from select - chèn mysql vào nhiều hàng từ chọn

Trong hướng dẫn này, bạn đã học được cách sử dụng câu lệnh MySQL INSERT để chèn nhiều hàng vào bảng.

Hướng dẫn này có hữu ích không?

Làm thế nào tôi có thể chèn nhiều hàng vào dữ liệu MySQL cùng một lúc?

MySQL chèn nhiều câu lệnh hàng trong cú pháp này: Đầu tiên, chỉ định tên của bảng mà bạn muốn chèn sau khi chèn vào từ khóa. Thứ hai, chỉ định một danh sách cột được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn sau tên bảng. Thứ ba, chỉ định danh sách dữ liệu hàng được phân tách bằng dấu phẩy trong mệnh đề Giá trị.First, specify the name of table that you want to insert after the INSERT INTO keywords. Second, specify a comma-separated column list inside parentheses after the table name. Third, specify a comma-separated list of row data in the VALUES clause.

Có thể chèn nhiều hàng đồng thời không?

Mẹo: Chọn số lượng hàng giống như bạn muốn chèn.Ví dụ: để chèn năm hàng trống, chọn năm hàng.Không sao nếu các hàng chứa dữ liệu, vì nó sẽ chèn các hàng trên các hàng này.Giữ điều khiển, nhấp vào các hàng đã chọn, sau đó trên menu bật lên, nhấp vào Chèn.Select the same number of rows as you want to insert. For example, to insert five blank rows, select five rows. It's okay if the rows contain data, because it will insert the rows above these rows. Hold down CONTROL, click the selected rows, and then on the pop-up menu, click Insert.

Làm thế nào sử dụng chọn và chèn với nhau trong MySQL?

MySQL chèn vào câu lệnh CHỌN Việc chèn vào câu lệnh SELECT SPOTY Dữ liệu từ một bảng và chèn nó vào bảng khác.Việc chèn vào câu lệnh Chọn yêu cầu các loại dữ liệu trong các bảng nguồn và mục tiêu khớp.Lưu ý: Các bản ghi hiện có trong bảng đích không bị ảnh hưởng.The INSERT INTO SELECT statement copies data from one table and inserts it into another table. The INSERT INTO SELECT statement requires that the data types in source and target tables matches. Note: The existing records in the target table are unaffected.

Làm cách nào tôi có thể chèn nhiều hàng vào SQL bằng cách sử dụng truy vấn đơn trong PHP?

Chèn nhiều bản ghi vào MySQL bằng MySQLI và PDO..
Ví dụ (hướng đối tượng mysqli) theo định hướng đối tượng)
Ví dụ (thủ tục MySQLI)
Ví dụ (PDO)