首页 > 解决方案 > 我可以对 MySql 中另一个表上子对象数量的 SELECT 语句进行排序吗?

问题描述

假设我有一个名为 Parent 的表和另一个名为 Child 的表。Child 表有一个 parent_id 和一个描述。我想做一个查询,我们在其中获取 Parent 对象并按描述对其进行排序。但是,如果有超过 2 个子对象,我希望它们排在其他对象之后。这可能与案例陈述有关吗?

如果有任何帮助,我正在使用 mysqli 和 PHP。

标签: mysql

解决方案


有可能,我们不需要 case 声明。

select * 
from parent p
order by
(select count(*) 
from child c
where p.parent_id = c.parent_id)

如果您想将 2 和 2 与 2 以上分开,它可以是这样的

select * 
from parent p
where 
(select count(*) 
from child c 
where c.parent_id = p.parent_id) <= 2
order by p.description
union
select * 
from parent p
where 
(select count(*) 
from child c 
where c.parent_id = p.parent_id) > 2
order by p.description

推荐阅读