因为我需要编写SQL语句已经有一段时间了(我甚至不知道是否有足够的知识来发表这种说法。)
所以,这是交易。表有两列。一个是父ID,另一个是子Id。
parent_id | child_id
4 | 2
2 | 5
这仅用于保存复合父/子层次结构。
4,2行意味着id为4的结构将结构id 2称为子。 2,5意味着具有id 2的结构指的是具有id 5作为孩子的结构。 等等。
这是我需要做的: 我需要提取所有未被任何结构作为子结构引用的结构(根结构)。 什么SQL(最好是postgres)语句才能实现呢?
答案 0 :(得分:2)
查找不属于另一个结构的子结构的所有结构:
select *
from YourTable
where Parent_Id not in (Select child_id from ...)
答案 1 :(得分:1)
假设没有祖父母,曾祖父母关系的余地,我建议在这种情况下使用Left-JOIN
。以下内容:
Select * from Table
LEFt join Table on Parent_id=child_id
WHERE child_id is null
答案 2 :(得分:1)
SELECT *
FROM structures
WHERE id not in ( SELECT child_id FROM Table ) AS dummy