我有两个表(例如)人与父母,父母与人之间存在多对一的关系,因此一个人可以有很多父母,有直接父母和间接父母(祖父母等)。父级具有外键personId,而Person的主键当然是personId。
Person table Id <PK> Parent table Id<PK> ParentPersonId <FK into Person > Person has rows with values PK 1 2 3 Parent has rows with values 1, 2 1, 3 2, 3 so person 1 has parents 2, 3 I eapect to get List<Person> [ {1, {2,3}}, {2, {3}}, {3} ]
我正在使用Spring Boot JDBC查询MS SQL Server数据库,我可以获取personId的所有父级,当然,我可以获取Person表中所有人员的列表。但是,是否可以在一条SQL语句中检索所有人员的列表,并在类人员中检索人员ID的列表,这些列表是与Parent表联接的结果?
还是我必须分两步完成。获取人员列表,然后在数据库中查询每个人的父母列表?
我正在尝试做这样的事情,但它显示“语法错误”。
select ID as personId (select * from Parent where personId = parentPersonId) from Person
假设您在Parent表中的数据不是递归的(此表为每个祖先(直接或间接)包含一行),则可以使用一个简单的查询:
select per.id, par.parentPersonId from Person per left join Parent par on per.id = par.id
如果您的数据是递归的(显然不是,因为3既是1的父代又是祖父母),则需要使用递归CTE查询。