在PostgreSQL中将多对多关系转换为一对多关系
发布时间:2020-12-13 18:04:58 所属栏目:百科 来源:网络整理
导读:我在foo和bar之间有多对多的模型作为foo_bar与foo_id和bar_id建模. 我现在想把它建模为一对多(我的数据允许). 我已经添加了一个foo_id列到bar,但现在我想要迁移我的数据.所以,我想 UPDATE bar SET foo_id = f where id = b; 每个f和b对来自哪里 SELECT foo_i
我在foo和bar之间有多对多的模型作为foo_bar与foo_id和bar_id建模.
我现在想把它建模为一对多(我的数据允许). 我已经添加了一个foo_id列到bar,但现在我想要迁移我的数据.所以,我想 UPDATE bar SET foo_id = f where id = b; 每个f和b对来自哪里 SELECT foo_id AS f,bar_id AS b FROM foo_bar; 是否可以在SQL(特别是PostgreSQL 9.0)中执行此操作? 我知道如果只有一个值,如何在UPDATE中执行子SELECT,但在这种情况下难以理解. UPDATE bar b SET foo_id = fb.foo_id FROM foo_bar fb WHERE fb.bar_id = b.bar_id; 如果一个栏应该有多行(根据你的描述你不应该这样),一行将被多次更新,结果是任意的. 这种形式的查询通常比相关子查询执行得更好. 请注意,bar的主键实际上应该命名为bar_id – 我在查询中使用该名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |