我有一个包含以下列的users
表:
parent_type (string, can be either `ParentGroup` or `SubGroup`)
parent_id (int)
,还有具有ID和名称列的表parent_groups
和sub_groups
。 sub_groups
还有一个与parent_groups
相关的parent_id
我需要从users
表中选择所有列,并将表'parent_groups'加入表中,像这样:
select users.* from users
if (users.parent_type === 'SubGroup') {
left join sub_groups on users.parent_id = sub_groups.id
left join parent_groups on sub_groups.parent_id = parent_groups.id
} else if users.parent_type === 'ParentGroup') {
left join parent_groups on users.parent_id = parent_groups.id
}
答案 0 :(得分:1)
一般而言,可能有更好的方法来执行此操作,并且更改表结构也可能有所帮助,但是您可以使用UNION进行此操作。您必须确保各列匹配,但是看起来像这样:
select *
from users
left join sub_groups on users.parent_id = sub_groups.id
left join parent_groups on sub_groups.parent_id = parent_groups.id
where users.parent_type === 'SubGroup'
UNION
select *
from users
left join parent_groups on users.parent_id = parent_groups.id
where users.parent_type === 'ParentGroup';