如何检查当前记录是否为Nth Level Child的父级(PostgreSQL)

时间:2017-10-24 04:56:28

标签: sql postgresql parent-child

在PostgreSQL数据库中,寻找解决方案以检查给定的2条记录是否具有父级和第N个子级关系。

有以下表格布局,

@Entity
public class Employee {

  @Id
  @GeneratedValue(...)
  private Long idNumber;

  private String empName;

  private Long managerId;  
}

假设我们有以下格式的表数据,

+----------+---------+-----------+
| idNumber | empName | managerId |
+----------+---------+-----------+
|        1 | Emp1    | NULL      |
|        2 | Emp2    | 1 (Emp1)  |
|        3 | Emp3    | 1 (Emp1)  |
|        4 | Emp4    | 2 (Emp2)  |
|        5 | Emp5    | 4 (Emp4)  |
+----------+---------+-----------+

如果我们获得“Emp1”和“Emp5”的输入ID,则使用单个SQL查询可以确定“Emp1”是否是“Emp5”的超级父级。

我找到的一个选项是使用“WITH RECURSIVE”选项检索所有Nth Level记录。

http://www.postgresqltutorial.com/postgresql-recursive-view/

这需要加载所有中间数据。

想要检查是否有更好的方法来检查2 N级记录之间是否存在关系。仅使用布尔标志查找直接关系。不需要显示任何中间行。

由于

0 个答案:

没有答案