mysql - 我可以对 MySql 中另一个表上子对象数量的 SELECT 语句进行排序吗?
问题描述
假设我有一个名为 Parent 的表和另一个名为 Child 的表。Child 表有一个 parent_id 和一个描述。我想做一个查询,我们在其中获取 Parent 对象并按描述对其进行排序。但是,如果有超过 2 个子对象,我希望它们排在其他对象之后。这可能与案例陈述有关吗?
如果有任何帮助,我正在使用 mysqli 和 PHP。
解决方案
有可能,我们不需要 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
推荐阅读
- php - 如何使用php从mongodb文档中删除或删除数组数据
- excel - 工作表类的运行时错误“1004”粘贴方法失败(仅在选定的计算机上)
- mongodb - 删除具有对象键值猫鼬的数组元素
- php - 警告:array_column() 期望参数 1 为数组,在
- python - Plotly choropleth 在在线但不在离线模式下工作
- angular - 更新 Firebase 和 Angular 后获取“firebase.auth 不是函数”
- python - Deleting an element from a list of tuples and then calculating a total price based on elements within each tuple
- python-3.x - 如何区分物体曲率的两种不同类型的异常?
- python - TypeError:“DictWrapper”对象不可下标
- angular - httpclient中类型化Get的优势