我正在开发一个有多个项目共享预配置清单的待办事项应用程序,我想要的是能够修改每个项目包含的清单。
我想到的是有 2 个单独的表:1 个用于共享表,1 个用于每个项目的修改,就像这样
CREATE TABLE checklist (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
title text NOT NULL,
description text NOT NULL,
);
CREATE TABLE modification (
project_uuid uuid,
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
title text NOT NULL,
description text NOT NULL,
);
每个项目都有自己的清单,基于用户可以修改的预配置清单,对共享清单所做的任何修改都将反映到所有项目中。
有没有办法使用第二个“修改”表在“清单”表之上进行修改?如果在“修改”中找不到某一行,它会从“清单”中获取它,如果两个表中都存在一行,“修改”中的行会覆盖“清单”中的行吗?
例如,如果我有:
SELECT * FROM checklist;
id | title | description
---+--------+-------------
1 | Item 1 | Dummy item
2 | Item 2 | Dummy item
SELECT * FROM modification;
project_uuid | id | title | description |
-------------+----+--------+----------------------+
1 | 2 | Item 2 | Modified description |
我想要这个结果
id | title | description |
----+--------+----------------------+
1 | Item 1 | Dummy item |
2 | Item 2 | Modified description |
提前致谢
使用左连接和合并()函数:
select c.id,
coalesce(m.title, c.title) as title,
coalesce(m.description, c.description) as description
from checklist c
left join modification m on c.id=m.id
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句