Có thể dùng Prepared Statement để tách chuỗi và chèn nhiều dòng một lần.
Tạo bảng:
mysql> CREATE TABLE University (UserId INT, UniversityId INT);
Các bước xử lý:
mysql> SET @userId = '8,9,10';
mysql> SET @UniversityId = 100;
mysql> SET @myValues = REPLACE(@userId, ',', CONCAT(', ', @UniversityId, '),('));
mysql> SET @myValues = CONCAT('(', @myValues, ', ', @UniversityId, ')');
mysql> SET @insertQuery1 = CONCAT('INSERT INTO University VALUES', @myValues);
Thực thi prepared statement:
mysql> PREPARE st FROM @insertQuery1; mysql> EXECUTE st; Query OK, 3 rows affected (0.18 sec)
Kết quả:
+--------+--------------+ | UserId | UniversityId | +--------+--------------+ | 8 | 100 | | 9 | 100 | | 10 | 100 | +--------+--------------+
Giải phóng statement:
mysql> DEALLOCATE PREPARE st;
Lưu ý: Cách này phù hợp cho chuỗi đơn giản. Với dữ liệu phức tạp, cân nhắc dùng script ngôn ngữ lập trình (Python, PHP...) hoặc hàm JSON_TABLE (MySQL 8.0+).