我有一个名为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。查询来自节点服务器。
INSERT INTO
(
,
) VALUES (1,5),(3,5),(4,5)
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 施工单位:
ROW
INSERT INTO `enrolled`(`course_id`, `student_id`) SELECT course_id, 5 FROM (VALUES ROW(1), ROW(3), ROW(5)) t(course_id)
1条答案
按热度按时间uplii1fm1#
可以将值放入派生表中:
这比多个查询更有效,因为它只执行一次到服务器的往返,而不是三次。
在mysql的最新版本中,您可以使用
ROW
施工单位: