如何仅用SQL填充SQLite关联表?已知学生ID及所选课程名称
用SQL填充学生选课关联表的方法
已知student_id=1的学生所选课程名称(如数学、英语),可以通过INSERT...SELECT语句直接从classes表匹配课程ID,批量插入到关联表中,具体操作如下:
基础插入语句
如果确定这些课程在classes表中存在,且关联表中没有重复记录,可使用以下语句:
INSERT INTO 关联表 (student_id, class_id) SELECT 1, class_id FROM classes WHERE class_name IN ('数学', '英语');
这个语句的逻辑是:从classes表中筛选出名称为「数学」「英语」的课程ID,将其与固定的student_id=1组合,批量插入到关联表的对应字段中。
避免重复插入的优化
如果关联表设置了student_id和class_id的联合唯一约束(防止同一学生重复选同一门课),可以加上冲突处理逻辑,避免插入重复数据:
INSERT INTO 关联表 (student_id, class_id) SELECT 1, class_id FROM classes WHERE class_name IN ('数学', '英语') ON CONFLICT (student_id, class_id) DO NOTHING;
这样当该学生已经选过某门课时,SQL会自动跳过这条重复记录,不会报错。
内容的提问来源于stack exchange,提问作者Bisasam
相关产品推荐
相关产品推荐

