添加所有具有相同值的项目列表的最佳方法是什么

zphenhs4  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(373)

我有一个名为registered的表,有两列,course\u id和student\u id。我有一个student 5的课程id列表,例如1、3、4。可以手动执行 INSERT INTOenrolled(course_id,student_id) VALUES (1,5),(3,5),(4,5) . 有没有更好、更短的方法来循环数组,并且只写一次student\ id的值?
我在用mariadb,mysql。查询来自节点服务器。

uplii1fm

uplii1fm1#

可以将值放入派生表中:

INSERT INTO `enrolled`(`course_id`, `student_id`) 
SELECT course_id, 5
FROM (
    SELECT 1 course_id
    UNION ALL SELECT 3
    UNION ALL SELECT 5
) t

这比多个查询更有效,因为它只执行一次到服务器的往返,而不是三次。
在mysql的最新版本中,您可以使用 ROW 施工单位:

INSERT INTO `enrolled`(`course_id`, `student_id`) 
SELECT course_id, 5
FROM (VALUES ROW(1), ROW(3), ROW(5)) t(course_id)

相关问题