首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新中间表

更新中间表
EN

Stack Overflow用户
提问于 2019-08-03 10:43:25
回答 1查看 38关注 0票数 1

我有两个关于如何创建和更新我的中间表的问题。例如,我有两个表,一个是学生,另一个是主题模块,它们之间有着多到多的关系,它们如下所示:

代码语言:javascript
运行
复制
student                             class
student_id student_name             class_id class_name
1          John                     1        Economics
2          Mary                     2        Physics

中间表如下所示,约翰只上物理课,玛丽同时上物理和经济学课:

代码语言:javascript
运行
复制
studentclasses
id student_id class_id
1  1          2
2  2          1
3  2          2

我的第一个问题是:由于学生和班级的表都很小,所以我可以手动创建中间表。当我使用较大的数据集时,如何创建中间表?

我的第二个问题:,如果我能收到一个新的条目,所有的信息,即。student_name, student_class,然后如何将这个新条目更新到中间表中?

PS。我正在使用Postgresql

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-03 10:55:29

我想你想要这样的东西:

代码语言:javascript
运行
复制
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,则不需要加入。您可以直接插入到表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57337574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档