我有两个关于如何创建和更新我的中间表的问题。例如,我有两个表,一个是学生,另一个是主题模块,它们之间有着多到多的关系,它们如下所示:
student                             class
student_id student_name             class_id class_name
1          John                     1        Economics
2          Mary                     2        Physics中间表如下所示,约翰只上物理课,玛丽同时上物理和经济学课:
studentclasses
id student_id class_id
1  1          2
2  2          1
3  2          2我的第一个问题是:由于学生和班级的表都很小,所以我可以手动创建中间表。当我使用较大的数据集时,如何创建中间表?
我的第二个问题:,如果我能收到一个新的条目,所有的信息,即。student_name, student_class,然后如何将这个新条目更新到中间表中?
PS。我正在使用Postgresql
发布于 2019-08-03 10:55:29
我想你想要这样的东西:
insert into studentclasses (student_id, class_id)
    select s.student_id, c.class_id
    from (values ('John', 'Physics'),
                 ('Mary', 'Economics'),
                 ('Mary', 'Physics')
         ) v(student_name, class_name) join
         student s
         on s.student_name = v.student_name join
         class c
         on c.class_name = v.class_id;也就是说,您有一个学生名称/类名对的来源。在此查询中,由values()语句提供。然后,您可以对适当的表进行join,以获得所需的ids。
当然,如果您首先知道if,则不需要加入。您可以直接插入到表中。
https://stackoverflow.com/questions/57337574
复制相似问题