Jam*_*ber 7 sql postgresql database-design many-to-many one-to-many
我有许多一对多之间foo和bar建模为表foo_bar与foo_id和bar_id.
我现在想把它建模为一对多(我的数据允许).
我已添加了一foo_id列bar但现在我想迁移我的数据.所以,我想
UPDATE bar SET foo_id = f where id = b;
Run Code Online (Sandbox Code Playgroud)
每个f人和b一对来自哪里
SELECT foo_id AS f, bar_id AS b FROM foo_bar;
Run Code Online (Sandbox Code Playgroud)
是否可以在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;
Run Code Online (Sandbox Code Playgroud)
如果你应该有多行bar(你不应该根据你的描述),那么一行将被多次更新,结果是任意的.
这种形式的查询通常比相关子查询执行得更好.
请注意,bar应该确实命名主键bar_id- 我在查询中使用该名称.
| 归档时间: |
|
| 查看次数: |
2393 次 |
| 最近记录: |