我有一系列的父子表,例如。
Table A
id
name
Table B
id
name
parent_a
Table C
id
name
parent_b
我想要一个查询将所有表放入具有以下列的单个表中,类似于邻接列表模型
id
parent_id
name
type
我尝试执行以下查询
SELECT
a.id as id,
null AS parent_id,
a.name as name,
1 AS type
FROM a
UNION ALL
SELECT
b.id as id,
b.parent_a AS parent_id,
b.name,
2 AS type
FROM b
UNION ALL
SELECT
c.id as id,
c.parent_b as parent_id,
c.name,
3 AS type
FROM c;
这不会给出所需的结果,因为每个单独表中的 id 都是重复的,我发现解决该问题的一种方法是在每个单独表中包含唯一的 Guid 列。
- Guid 是实现所需输出的唯一方法吗?
- 如果是这样,有没有办法在 postgres 中的一组表中生成唯一的 Guid?
- 有没有其他方法可以在没有 Guid 的情况下完成此任务?